mongdb wiredtiger存儲引擎

wiredtiger存儲引擎是文檔級別的併發,多個客戶端能同時操作一個集合中的不通的文檔。
對於大多數的讀寫操作,wiredtiger使用樂觀鎖的併發控制,在global,database collection級別使用意向鎖,當存儲引擎檢測到兩個操作衝突時候,mongodb會透明的對導致寫衝突的操作進行重試。
一些全局的操作,例如一些包含多個數據庫的短期操作,仍然會需要全局的實例級別鎖,一些其他操作,比如刪除集合,需要一個排他的數據庫鎖。
快照和檢查點
wiredtiger提供mvcc,在操作的開始,wiredtiger提供一個基於時間點的快照,快照提供內存中數據的一致性視圖。

寫入磁盤時,WiredTiger將所有數據文件中的快照中的所有數據以一致的方式寫入磁盤。 現在持久的數據充當數據文件中的檢查點。 該檢查點可確保數據文件直到最後一個檢查點(包括最後一個檢查點)都保持一致; 即檢查點可以充當恢復點。
wiredtiger中是間隔60s,或產生2g的journal data數據產生一個檢查點。
在寫一個新檢查點的時候,之前的檢查點仍然有效,這樣在寫入新檢查點的時候,如果mongodb遇到問題,在重啓的時候會恢復到最近一個有效的檢查點。

當WiredTiger的元數據表被原子更新以引用新的檢查點時,新的檢查點將變爲可訪問且永久的。 一旦可以訪問新的檢查點,WiredTiger就會從舊的檢查點釋放頁面。
即便不實用jounaling,mongodb也能恢復到最近的檢查點,然後爲了恢復最近檢查點以後的改變,仍然需要運行journaling.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章