WiredTiger 內部記憶體
它在 MongoDB 文件常見問題解答 ( https://docs.mongodb.com/manual/faq/storage/#wiredtiger-storage-engine ) 中有說明:
避免將 WiredTiger 內部記憶體大小增加到其預設值以上。
預設情況下應該是 RAM 的 50 % 或 60 %
和
storage.wiredTiger.engineConfig.cacheSizeGB 限制了 WiredTiger 內部記憶體的大小。作業系統會將可用的空閒記憶體用於文件系統記憶體,這允許壓縮的 MongoDB 數據文件保留在記憶體中。
我不明白這個說法。WT 記憶體是否包含壓縮數據和索引方面的工作集?如果是這樣,我們是否需要為 MongoDB 數據文件的某種記憶體映射文件保留額外的記憶體?
我的
db.serverStatus().mem
節目是這樣的:{ "bits" : 64, "resident" : 10518, "virtual" : 12131, "supported" : true, "mapped" : 0, "mappedWithJournal" : 0 }
所以我猜我沒有記憶體映射字節,那麼我可以增加de WT記憶體嗎?
謝謝 !
我們是否需要為 MongoDB 數據文件的某種記憶體映射文件保留額外的記憶體
serverStatus 輸出中的
mem.mapped
和mem.mappedWithJournal
指標僅適用於 MMAPv1 儲存引擎,因此使用 WiredTiger 時預計為 0。這些指標早於儲存引擎 API(和 WiredTiger),因此可能會在某個時候移至 serverStatus 的儲存引擎特定部分。WT 記憶體是否包含壓縮數據和索引方面的工作集?
WiredTiger 內部記憶體用於未壓縮數據,它與磁碟上的壓縮數據格式不同。WiredTiger 記憶體之外的記憶體可用於文件系統記憶體(記憶體磁碟上的表示,包括壓縮)以及其他臨時 RAM 要求,例如每個連接的成本(每個連接 1MB)、記憶體中的排序、聚合和 JavaScript上下文。
您的工作集是您的應用程序經常訪問的數據和索引的總集。為了獲得最佳性能,這應該理想地適合 RAM。更大的 WiredTiger 記憶體將允許在 RAM 中儲存更多未壓縮的數據,但會犧牲可用於其他目的的記憶體。如果您的數據顯著壓縮,文件系統記憶體的更多可用記憶體將允許 RAM 中更大的總工作集(未壓縮 + 壓縮數據)。
所以我猜我沒有記憶體映射字節,那麼我可以增加de WT記憶體嗎?
根據 MongoDB 文件,您通常應該將 WiredTiger 記憶體保留為預設大小(或者甚至可能減小此大小)。您始終可以嘗試為您的工作負載和部署調整記憶體大小,但將其設置得太大可能會對性能產生不利影響。