1. 程式人生 > >mongodb第十一篇文章~mongodb的引擎解讀

mongodb第十一篇文章~mongodb的引擎解讀

分離 影響 支持 res 開啟 bsp true collect 狀態

一 簡介 WiredTiger引擎調優技

二 兩種引擎對比概念

從3.2.x開始,WiredTiger成為默認的存儲引擎。最為MongoDB目前最流行的存儲引擎,WiredTiger與原先的MMAPV1相比有以下優勢:

1 性能&並發:在大多數工作負載下,WiredTiger的性能要比MMAPV1高很多。WiredTiger引擎為現代多核系統量身定制,更好地發揮多核系統的處理能力。MMAPV1引擎使用表級鎖,因此,當某個單表上有並發的操作,吞吐將受到限制。WiredTiger使用文檔級鎖,由此帶來並發及吞吐的提高。對於典型的應用,切到WiredTiger引擎,可帶來5-10倍的性能提升。

2 壓縮&加密:MMAPV1引擎要求數據在內存和在磁盤的形式一致(map磁盤內存映射)。因此,它並不支持壓縮和加密。WiredTiger並沒有這層限制,可以更好地支持。

3 索引前綴壓縮:WiredTiger存儲索引時使用前綴壓縮——相同的前綴只存一次。由此帶來的效果是:索引更小了,對物理內存使用也更少了。

4 數據存儲方式: 兩種存儲引擎采用了不同的存儲引擎,是沒辦法直接替換軟件目錄進行升級的,只能初始化重新同步或者導入,wt引擎生產的數據和索引文件以wt為結尾,jr日誌命名為WiredTigerPreplog開頭1三 WiredTiger 參數

一 wiredTigerCacheSizeGB=48
含義
1 cacheSizeGB 指的就是Cache size,包括數據和索引。Mongod本身使用內存如連接池堆棧以及sorting buffer等都是額外的,不會被統計到這個數字裏面。
2 MongoDB在做諸如聚合、排序、連接管理等操作時需要額外的內存。因此,必須確保有足夠的內存可供使用,否則,MongoDB進程有被OOM killer殺死的風險。
和mysql的innodb_buffer_pool很像呢,數據索引放在內存裏,排序需要額外的內存
2 推薦配置
服務器內存X75%
3 查看狀態命令
db.serverStatus().wiredTiger.cache
二 wiredTigerDirectoryForIndexes=true
1 含義
Index文件和數據文件分離,索引一個目錄,數據一個目錄。
去具體的collection目錄下可以發現
collection index 兩個目錄
三 wiredTigerDirectoryForIndexes=true
1 含義
是否開啟索引的前綴壓縮,這裏影響所有DB的索引。它會一次存儲所有前綴一樣的索引,
減少內存、磁盤IO的消耗,默認開啟。
四 wiredTigerCollectionBlockCompressor=snappy
1 含義
采用何種壓縮方式 默認snappy 不建議采用zlib方式,會加重CPU的負擔

五 以後有的會繼續補充

mongodb第十一篇文章~mongodb的引擎解讀