一、、mongodb寫入操作流程:
1、wiredtiger寫操作先到cache,並持久化wal
2、每60s或log檔案達到2g,則執行一次checkpoint持久化,產生乙個新快照。
3、wiredtiger連線初始化時,先將資料恢復到最新的快照,再根據wal恢復資料。
二、cache
cache採用btree方式組織,每個btree節點為乙個page,資料以page為單位按需從磁碟載入或寫入磁碟
root page:btree的根節點
internal page:中間索引節點
page:葉子節點,資料儲存在此節點。
三、增刪改
採用copy on write的方式管理insert、update、delete。
修改操作:
1、資料讀入cache裡,
2、對資料修改,
3、持久化時,寫入新的page(不會寫原理的leaf page)。
4、執行chechpoint之後,產生新的page。
四、checkpoint
每次checkpoint的過程:
1、對所有的table進行一次checkpoint,將每個table的checkpoint的元資料更新到wiredtiger.wt
2、再對wiredtiger.wt進行checkpoint,將checkpoint的meta資料更新到wiredtiger.turtle.set
3、將wiredtiger.turtle.set重新命名為wiredtiger.turtle
五、wiredtiger包含以下檔案:
wiredtiger.basecfg :儲存基本配置資訊
wiredtiger.lock用於防止多個程序連線同乙個wiredtiger資料庫
table*.wt儲存各個table的資料
wiredtiger.wt:是特殊的table,用於儲存所有其他table的meta資料資訊
wiredtiger.turtle:儲存wiretiger.wt的meta資料資訊
儲存引擎Wiredtiger原理剖析
今天開始看mongodb 3.2的文件,發現了這麼兩句話 support for multiple storage engines mongodb supports multiple storage engines,such as wiredtiger storage engine and mmap...
WiredTiger儲存引擎
儲存引擎是資料庫的一部分,負責管理如何在記憶體和磁碟上儲存資料。許多資料庫支援多個儲存引擎,其中不同的引擎對特定工作負載的效能會更好。例如,乙個儲存引擎可能為讀取繁重的工作負載提供更好的效能,另乙個可能支援更高的寫入操作吞吐量。也可以看看 儲存引擎 可以。您可以擁有使用不同儲存引擎的副本集成員。注意...
wiredtiger原始碼一 btree
附一篇btree的好文章 wiredtiger的btree的page分為四種 1.internal結點。2.fixed length結點。3.variable length column store結點。4.variable length row store結點。從上面的結點分類可以確定wiredt...