SQLite創(chuàng)建的數(shù)據(jù)庫有一種模式IN-MEMORY,但是它并不表示SQLite就成了一個(gè)內(nèi)存數(shù)據(jù)庫。IN-MEMORY模式可以簡單地理解為,本來創(chuàng)建的數(shù)據(jù)庫文件是基于磁盤的,現(xiàn)在整個(gè)文件使用內(nèi)存空間來代替磁盤空間,其它操作保持一致。也就是數(shù)據(jù)庫的設(shè)計(jì)沒有根本改變。

提到內(nèi)存,許多人就會(huì)簡單地理解為,內(nèi)存比磁盤速度快很多,所以內(nèi)存模式比磁盤模式的數(shù)據(jù)庫速度也快很多,甚至有人望文生意就把它變成等同于內(nèi)存數(shù)據(jù)庫。

它并不是為內(nèi)存數(shù)據(jù)庫應(yīng)用而設(shè)計(jì)的,本質(zhì)還是文件數(shù)據(jù)庫。它的數(shù)據(jù)庫存儲(chǔ)文件有將近一半的空間是空置的,這是它的B樹存儲(chǔ)決定的,請(qǐng)參看上一篇SQLite存儲(chǔ)格式。內(nèi)存模式只是將數(shù)據(jù)庫存儲(chǔ)文件放入內(nèi)存空間,但并不考慮最有效管理你的內(nèi)存空間,其它臨時(shí)文件也要使用內(nèi)存,事務(wù)回滾日志一樣要生成,只是使用了內(nèi)存空間。它的作用應(yīng)該偏向于臨時(shí)性的用途。

我們先來看一下下面的測(cè)試結(jié)果,分別往memory和disk模式的sqlite數(shù)據(jù)庫進(jìn)行1w, 10w以及100w條數(shù)據(jù)的插入,采用一次性提交事務(wù)。另外使用commit_hook捕捉事務(wù)提交次數(shù)。

(注:測(cè)試場景為在新建的數(shù)據(jù)庫做插入操作,所以回滾日志是很小的,并且無需要在插入過程中查找而從數(shù)據(jù)庫加載頁面,因此測(cè)試也并不全面)

內(nèi)存模式

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

磁盤模式

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

在事務(wù)提交前的耗時(shí) (事務(wù)提交后的總耗時(shí)):


  • 1w10w100w
    內(nèi)存模式0.04s0.35s3.60s

    延伸閱讀

    學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式

    我想了解如何學(xué)習(xí)

    姓名:
    手機(jī):
    留言:
     
      <form id="fr0j3"><nav id="fr0j3"></nav></form>