SQLite教程(十):內(nèi)存數(shù)據(jù)庫和臨時(shí)數(shù)據(jù)庫
一、內(nèi)存數(shù)據(jù)庫:
在SQLite中,數(shù)據(jù)庫通常是存儲(chǔ)在磁盤文件中的。然而在有些情況下,我們可以讓數(shù)據(jù)庫始終駐留在內(nèi)存中。最常用的一種方式是在調(diào)用sqlite3_open()的時(shí)候,數(shù)據(jù)庫文件名參數(shù)傳遞":memory:",如:
復(fù)制代碼 代碼如下:
rc = sqlite3_open(":memory:", &db);
在調(diào)用完以上函數(shù)后,不會(huì)有任何磁盤文件被生成,取而代之的是,一個(gè)新的數(shù)據(jù)庫在純內(nèi)存中被成功創(chuàng)建了。由于沒有持久化,該數(shù)據(jù)庫在當(dāng)前數(shù)據(jù)庫連接被關(guān)閉后就會(huì)立刻消失。需要注意的是,盡管多個(gè)數(shù)據(jù)庫連接都可以通過上面的方法創(chuàng)建內(nèi)存數(shù)據(jù)庫,然而它們卻是不同的數(shù)據(jù)庫,相互之間沒有任何關(guān)系。事實(shí)上,我們也可以通過Attach命令將內(nèi)存數(shù)據(jù)庫像其他普通數(shù)據(jù)庫一樣,附加到當(dāng)前的連接中,如:
復(fù)制代碼 代碼如下:
ATTACH DATABASE ":memory:" AS aux1;
二、臨時(shí)數(shù)據(jù)庫:
在調(diào)用sqlite3_open()函數(shù)或執(zhí)行ATTACH命令時(shí),如果數(shù)據(jù)庫文件參數(shù)傳的是空字符串,那么一個(gè)新的臨時(shí)文件將被創(chuàng)建作為臨時(shí)數(shù)據(jù)庫的底層文件,如:
復(fù)制代碼 代碼如下:
rc = sqlite3_open("", &db);
或
復(fù)制代碼 代碼如下:
ATTACH DATABASE "" AS aux2;
和內(nèi)存數(shù)據(jù)庫非常相似,兩個(gè)數(shù)據(jù)庫連接創(chuàng)建的臨時(shí)數(shù)據(jù)庫也是各自獨(dú)立的,在連接關(guān)閉后,臨時(shí)數(shù)據(jù)庫將自動(dòng)消失,其底層文件也將被自動(dòng)刪除。
盡管磁盤文件被創(chuàng)建用于存儲(chǔ)臨時(shí)數(shù)據(jù)庫中的數(shù)據(jù)信息,但是實(shí)際上臨時(shí)數(shù)據(jù)庫也會(huì)和內(nèi)存數(shù)據(jù)庫一樣通常駐留在內(nèi)存中,唯一不同的是,當(dāng)臨時(shí)數(shù)據(jù)庫中數(shù)據(jù)量過大時(shí),SQLite為了保證有更多的內(nèi)存可用于其它操作,因此會(huì)將臨時(shí)數(shù)據(jù)庫中的部分?jǐn)?shù)據(jù)寫到磁盤文件中,而內(nèi)存數(shù)據(jù)庫則始終會(huì)將數(shù)據(jù)存放在內(nèi)存中。
相關(guān)文章:
1. mssql鎖基礎(chǔ)教程2. MySQL基礎(chǔ)教程9 —— 函數(shù)之日期和時(shí)間函數(shù)3. 如何使用Pycharm連接SQL Sever(詳細(xì)教程)4. MySQL入門教程2 —— 輸入查詢及退出查詢命令5. MySQL實(shí)戰(zhàn)文章(非常全的基礎(chǔ)入門類教程)6. SQLite3 命令行操作指南7. Oracle PL/SQL語言初級(jí)教程之操作和控制語言8. mysql8.0.21安裝教程圖文詳解9. SQL Server2022安裝圖文教程(最新推薦)10. SQLite數(shù)據(jù)庫常用語句及MAC上的SQLite可視化工具M(jìn)easSQLlite使用方法
