SQLite教程(十):內(nèi)存數(shù)據(jù)庫和臨時數(shù)據(jù)庫
一、內(nèi)存數(shù)據(jù)庫:
在SQLite中,數(shù)據(jù)庫通常是存儲在磁盤文件中的。然而在有些情況下,我們可以讓數(shù)據(jù)庫始終駐留在內(nèi)存中。最常用的一種方式是在調用sqlite3_open()的時候,數(shù)據(jù)庫文件名參數(shù)傳遞":memory:",如:
rc = sqlite3_open(":memory:", &db);
在調用完以上函數(shù)后,不會有任何磁盤文件被生成,取而代之的是,一個新的數(shù)據(jù)庫在純內(nèi)存中被成功創(chuàng)建了。由于沒有持久化,該數(shù)據(jù)庫在當前數(shù)據(jù)庫連接被關閉后就會立刻消失。需要注意的是,盡管多個數(shù)據(jù)庫連接都可以通過上面的方法創(chuàng)建內(nèi)存數(shù)據(jù)庫,然而它們卻是不同的數(shù)據(jù)庫,相互之間沒有任何關系。事實上,我們也可以通過Attach命令將內(nèi)存數(shù)據(jù)庫像其他普通數(shù)據(jù)庫一樣,附加到當前的連接中,如:
ATTACH DATABASE ':memory:' AS aux1;
二、臨時數(shù)據(jù)庫:
在調用sqlite3_open()函數(shù)或執(zhí)行ATTACH命令時,如果數(shù)據(jù)庫文件參數(shù)傳的是空字符串,那么一個新的臨時文件將被創(chuàng)建作為臨時數(shù)據(jù)庫的底層文件,如:
rc = sqlite3_open("", &db);
或
ATTACH DATABASE '' AS aux2;
和內(nèi)存數(shù)據(jù)庫非常相似,兩個數(shù)據(jù)庫連接創(chuàng)建的臨時數(shù)據(jù)庫也是各自獨立的,在連接關閉后,臨時數(shù)據(jù)庫將自動消失,其底層文件也將被自動刪除。
盡管磁盤文件被創(chuàng)建用于存儲臨時數(shù)據(jù)庫中的數(shù)據(jù)信息,但是實際上臨時數(shù)據(jù)庫也會和內(nèi)存數(shù)據(jù)庫一樣通常駐留在內(nèi)存中,唯一不同的是,當臨時數(shù)據(jù)庫中數(shù)據(jù)量過大時,SQLite為了保證有更多的內(nèi)存可用于其它操作,因此會將臨時數(shù)據(jù)庫中的部分數(shù)據(jù)寫到磁盤文件中,而內(nèi)存數(shù)據(jù)庫則始終會將數(shù)據(jù)存放在內(nèi)存中。
相關文章
SQLite教程(十):內(nèi)存數(shù)據(jù)庫和臨時數(shù)據(jù)庫
這篇文章主要介紹了SQLite教程(十):內(nèi)存數(shù)據(jù)庫和臨時數(shù)據(jù)庫,本文講解了它們的創(chuàng)建方法和相關知識,需要的朋友可以參考下2015-05-05SQLite 實現(xiàn)if not exist 類似功能的操作
這篇文章主要介紹了SQLite 實現(xiàn)if not exist 類似功能的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01保護你的Sqlite數(shù)據(jù)庫(SQLite數(shù)據(jù)庫安全秘籍)
相信使用PHP開發(fā)的人員一定不會對SQLite感到陌生了,PHP5已經(jīng)集成了這個輕量型的數(shù)據(jù)庫。并且很多虛擬主機無論是win還是*nux都支持它。2011-08-08Win11下基于VS2022編譯SQLite3源碼的實現(xiàn)步驟
本文主要介紹了Win11下基于VS2022編譯SQLite3源碼的實現(xiàn)步驟,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-09-09