MongoDB 儲存引擎

2021-10-09 19:49:34 字數 2227 閱讀 7463

儲存引擎是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這種關係型資料中心來說,資料是以表的方式來儲存的,因此,簡單點來說,儲存引擎就是儲存和操作...