儲存引擎是mongodb的核心元件,負責管理資料如何儲存在硬碟和記憶體上。mongodb支援的儲存引擎有mmapv1 ,wiredtiger和inmemory。inmemory儲存引擎用於將資料只儲存在記憶體中,只將少量的元資料(meta-data)和診斷日誌(diagnostic)儲存到硬碟檔案中,由於不需要disk的io操作,就能獲取所需的資料,inmemory儲存引擎大幅度降低了資料查詢的延遲(latency)。從mongodb3.2開始預設的儲存引擎是wiredtiger,3.2版本之前的預設儲存引擎是mmapv1,mongodb4.x版本不再支援mmapv1儲存引擎
storage:
journal:
enabled: true
dbpath: /data/mongo/
##是否乙個庫乙個資料夾
directoryperdb: true
##資料引擎
engine: wiredtiger
##wt引擎配置
wiredtiger:
engineconfig:
##wt最大使用cache(根據伺服器實際情況調節)
cachesizegb: 25.3.2 wiredtiger儲存引擎優勢
5.3.3 wiredtiger引擎包含的檔案和作用
##是否將索引也按資料庫名單獨儲存
directoryforindexes: true
##表壓縮配置
collectionconfig:
##索引配置
wiredtiger儲存引擎優勢
wiredtiger.basecfg: 儲存基本配置資訊,與 configserver有關係
wiredtiger.lock: 定義鎖操作
table*.wt: 儲存各張表的資料
wiredtiger.wt: 儲存table* 的元資料
wiredtiger.turtle: 儲存wiredtiger.wt的元資料
journal: 儲存wal(write ahead log)
wiredtiger儲存引擎實現原理
寫請求wiredtiger的寫操作會預設寫入 cache ,並持久化到 wal (write ahead log),每60s或log檔案達到2g
做一次 checkpoint (當然我們也可以通過在寫入時傳入 j: true 的引數強制 journal 檔案的同步 ,
writeconcern
) 產生快照檔案。wiredtiger初始化時,恢復至最新的快照狀態,然後再根據wal
恢復資料,保證資料的完整性
1.對所有的table進行一次checkpoint,每個table的checkpoint的元資料更新至wiredtiger.wt
2.對wiredtiger.wt進行checkpoint,將該table checkpoint的元資料更新至臨時檔案
wiredtiger.turtle.set
3.將wiredtiger.turtle.set重新命名為wiredtiger.turtle。
4.上述過程如果中間失敗,wiredtiger在下次連線初始化時,首先將資料恢復至最新的快照狀態,然後根
據wal恢復資料,以保證儲存可靠性
journaling
在資料庫宕機時 , 為保證 mongodb 中資料的永續性,mongodb 使用了 write ahead logging 向磁碟
上的 journal 檔案預先進行寫入。除了 journal 日誌,mongodb 還使用檢查點(checkpoint)來保證
資料的一致性,當資料庫發生宕機時,我們就需要 checkpoint 和 journal 檔案協作完成資料的恢復工
作。在資料檔案中查詢上乙個檢查點的識別符號
在 journal 檔案中查詢識別符號對應的記錄
重做對應記錄之後的全部操作
Mongodb 儲存引擎
mongodb 3.0 的儲存引擎預設是mmapv1,還有乙個新引擎wiredtigger,wiredtigger具有很高的效能。建議在生產環境上公升級到wiredtigger。mongodb原生的儲存引擎,比較簡單,直接使用系統級的記憶體對映檔案機制。對於insert,read,update up...
Mysql 儲存引擎之 MyISAM儲存引擎
myisam是預設儲存引擎。每個myisam在磁碟上儲存成三個檔案。frm檔案儲存表定義 myd檔案儲存資料 myi檔案儲存索引。要明確表示你想要用乙個myisam 請用engine表選項指出來 create table test myisam id int engine myisam 2 如下是m...
mysql儲存引擎 mysql儲存引擎簡介
精品推薦 什麼是儲存引擎 mysql儲存引擎是資料庫如何儲存資料 怎樣建立索引以及如何查詢更新資料等技術的實現方法,資料通過使用不同的技術儲存在檔案中,使用不同的儲存機制 索引方式來提供不同的功能。在mysql這種關係型資料中心來說,資料是以表的方式來儲存的,因此,簡單點來說,儲存引擎就是儲存和操作...