Mongodb

將 journalCompressor 更改為 none - 不是預設 snappy

  • April 20, 2017

引用來自ObjectRocket 支持

嗨,費多爾!該journalCompressor設置專門與日誌文件相關。日誌通常不會被壓縮,因為在將數據從 WiredTiger 記憶體記憶體刷新到磁碟時,壓縮它們會導致額外的延遲。這種延遲會滲透到寫入問題。 journalCompressor none是我們配置中的預設值。

ObjectRocket 似乎對 DBaaS 有所了解

ObjectRocket是一家位於德克薩斯州奧斯汀的雲數據庫 (DBaaS) 公司,專注於 NoSQL 數據儲存,包括 MongoDB 和 Redis。2013年被Rackspace收購

你覺得journalCompressor不活潑怎麼辦?這是 DBaaS 提供商的有效配置並且最適合大多數案例嗎?

storage:
  dbPath: "/data/mongodb"
  journal:
      enabled: true
  engine: "wiredTiger"
  wiredTiger:
      engineConfig:
          journalCompressor: none
          directoryForIndexes: "/indexes/mongodb/"
      collectionConfig:
          blockCompressor: snappy
      indexConfig:
          prefixCompression: true

你覺得journalCompressor不活潑怎麼辦?這是 DBaaS 提供商的有效配置並且最適合大多數案例嗎?

一般來說,我會將 MongoDB 設置保留為預設設置,除非已證明變化對您的常見工作負載有益(即通過實際測試和測量)。Snappy 壓縮/解壓縮通常沒有太多成本,而且 I/O 通常比 CPU 更受資源約束。預設設置旨在“最適合大多數案例”,並且在 MongoDB 部署和持續集成測試中得到更廣泛的測試/使用。

WiredTiger 日誌文件的大小限制為 100MB;當達到日誌文件大小限制時,WiredTiger 會創建一個新的日誌文件並將之前的日誌文件同步到磁碟。使用單個日誌文件的預設journalCompressor設置snappy可以包含比不壓縮更多的數據。如果沒有壓縮,將會創建更多的日誌文件,並且會有更多的日誌 I/O。

CPU 與 I/O 使用的正確權衡將根據您的部署和工作負載而有所不同。如果您的部署有空閒的 CPU,您還可以考慮測試zlib壓縮(期望更好的壓縮但更多的 CPU 使用率)。

如果您擔心日誌和數據文件之間的 I/O 爭用,dbPath或者希望在日誌寫入是順序而不是隨機的情況下進行更精細的調整,那麼另一種選擇是將日誌目錄符號連結到單獨的掛載點。這種方法可能會影響您的備份策略(例如,如果您依賴文件系統快照),但是由於您已經在使用該directoryForIndexes選項,我懷疑您已經意識到了這個警告。

有關生產部署的更多配置建議,請參閱 MongoDB 手冊中的生產說明

引用自:https://dba.stackexchange.com/questions/171324