標籤:使用 數字 對比 命名 snap 儲存引擎 2.x 實體記憶體 儲存方式
一 簡介 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的引擎解讀