日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

SQLite數(shù)據(jù)庫通常存儲(chǔ)在單個(gè)普通磁盤文件中。但是,在某些情況下,數(shù)據(jù)庫可能存儲(chǔ)在內(nèi)存中。

SQLite使用內(nèi)存數(shù)據(jù)庫

 

強(qiáng)制SQLite數(shù)據(jù)庫單純的存在于內(nèi)存中的最常用方法是使用特殊文件名“ :memory: ” 打開數(shù)據(jù)庫。換句話說,不是將真實(shí)磁盤文件的名稱傳遞給sqlite3_open(),sqlite3_open16()或 sqlite3_open_v2()函數(shù)之一,而是傳入字符串“:memory:”。例如:

rc = sqlite3_open(“:memory:”,&db);

調(diào)用此接口完成后,不會(huì)打開任何磁盤文件。而是在內(nèi)存中創(chuàng)建一個(gè)新的數(shù)據(jù)庫。數(shù)據(jù)庫連接關(guān)閉后,數(shù)據(jù)庫就不再存在。每一個(gè)memory數(shù)據(jù)庫彼此不同。因此,打開兩個(gè)數(shù)據(jù)庫連接,每個(gè)數(shù)據(jù)庫連接的文件名為“:memory:”,將創(chuàng)建兩個(gè)獨(dú)立的內(nèi)存數(shù)據(jù)庫。

特殊文件名“:memory:”可用于允許數(shù)據(jù)庫文件名的任何位置。例如,它可以被用作 文件名中的ATTACH命令:

ATTACH DATABASE ':memory:' AS aux1;

請(qǐng)注意,為了應(yīng)用特殊的“:memory:”名稱并創(chuàng)建純內(nèi)存數(shù)據(jù)庫,文件名中不能有其他文本。因此,可以通過添加路徑名在文件中創(chuàng)建基于磁盤的數(shù)據(jù)庫,如下所示: "./:memory:"。

使用URI文件名時(shí),特殊的“:memory:”文件名也可以使用。例如:

rc = sqlite3_open(“file :: memory:”,&db);

要么,

ATTACH DATABASE 'file::memory:' AS aux1;

內(nèi)存數(shù)據(jù)庫和共享緩存

如果使用URI文件名打開內(nèi)存數(shù)據(jù)庫,則允許它們使用共享緩存。如果使用未加修飾的“:memory:”名稱來指定內(nèi)存數(shù)據(jù)庫,那么該數(shù)據(jù)庫始終具有專用高速緩存,并且僅對(duì)最初打開它的數(shù)據(jù)庫連接可見。但是,可以通過兩個(gè)或多個(gè)數(shù)據(jù)庫連接打開相同的內(nèi)存數(shù)據(jù)庫,如下所示:

rc = sqlite3_open("file::memory:?cache=shared", &db);

要么,

ATTACH DATABASE 'file::memory:?cache=shared' AS aux1;

這允許單獨(dú)的數(shù)據(jù)庫連接共享相同的內(nèi)存數(shù)據(jù)庫。當(dāng)然,共享內(nèi)存數(shù)據(jù)庫的所有數(shù)據(jù)庫連接都需要在同一個(gè)進(jìn)程中。當(dāng)數(shù)據(jù)庫的最后一個(gè)連接關(guān)閉時(shí),將自動(dòng)刪除數(shù)據(jù)庫并回收內(nèi)存。

如果在單個(gè)進(jìn)程中需要兩個(gè)或多個(gè)不同同時(shí)可共享的內(nèi)存數(shù)據(jù)庫,則mode = memory查詢參數(shù)可與URI文件名一起使用以創(chuàng)建命名的內(nèi)存數(shù)據(jù)庫:

rc = sqlite3_open("file:memdb1?mode=memory&cache=shared", &db);

要么,

ATTACH DATABASE 'file:memdb1?mode=memory&cache=shared' AS aux1;

當(dāng)以這種方式命名內(nèi)存數(shù)據(jù)庫時(shí),它將僅與使用完全相同名稱的另一個(gè)連接共享其緩存。

 

臨時(shí)數(shù)據(jù)庫

當(dāng)傳遞給sqlite3_open()或 ATTACH的數(shù)據(jù)庫文件的名稱是空字符串時(shí),則會(huì)創(chuàng)建一個(gè)新的臨時(shí)文件來保存數(shù)據(jù)庫。

rc = sqlite3_open("", &db);

ATTACH DATABASE '' AS aux2;

每次都會(huì)創(chuàng)建一個(gè)不同的臨時(shí)文件,因此就像使用特殊的“:memory:”字符串一樣,兩個(gè)到臨時(shí)數(shù)據(jù)庫的數(shù)據(jù)庫連接都有自己的私有數(shù)據(jù)庫。創(chuàng)建它們的連接關(guān)閉時(shí),將自動(dòng)刪除臨時(shí)數(shù)據(jù)庫。

即使為每個(gè)臨時(shí)數(shù)據(jù)庫分配了磁盤文件,實(shí)際上臨時(shí)數(shù)據(jù)庫通常駐留在內(nèi)存中的pager緩存中,因此“:memory:”創(chuàng)建的純內(nèi)存數(shù)據(jù)庫與臨時(shí)數(shù)據(jù)庫之間的差別很小。由空文件名創(chuàng)建。唯一的區(qū)別是“:memory:”數(shù)據(jù)庫必須始終保留在內(nèi)存中,而如果數(shù)據(jù)庫變大或SQLite受到內(nèi)存壓力,臨時(shí)數(shù)據(jù)庫的某些部分可能會(huì)刷新到磁盤。

前面的段落描述了默認(rèn)SQLite配置下臨時(shí)數(shù)據(jù)庫的行為。如果需要,應(yīng)用程序可以使用 temp_store編譯指示和SQLITE_TEMP_STORE編譯時(shí)參數(shù)來強(qiáng)制臨時(shí)數(shù)據(jù)庫表現(xiàn)為純內(nèi)存數(shù)據(jù)庫。

分享到:
標(biāo)簽:SQLite
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評(píng)定2018-06-03

通用課目體育訓(xùn)練成績評(píng)定