我將mongo裡面大量多餘的資料都刪除後,發現記憶體和檔案並沒有收縮,仍然佔用大量記憶體和硬碟,效能變化不大,請問,mongodb怎麼進行碎片整理?
什麼版本的MongoDB,什麼引擎? 3.2以上的WT引擎可以使用Compact來釋放空間,先前的版本無論是WT或MMAPv1都只能透過重新同步複製集的方式釋放空間。 問題是,生產環境一般來說沒有必要釋放,因為早晚還會佔回來,而且空閒的空間反正也會重用,如果不是真的缺那點空間,就別去釋放了。 至於是不是停機的問題,不止是這個問題,大部分時候都應該考慮複製集來解決,多個結點並行運行就是為了不停機準備的,拿掉一個下來做維護不會有多大的問題,拿主結點的時候可能會有幾秒鐘不可寫而已。
理論上說回收磁碟空間對效能不會有任何有益的影響。但在3.0.6和3.0.7所使用的WiredTiger引擎上發生過一個bug,在大量刪除文件時BTree會有錯誤的平衡從而導致效能嚴重下降。詳細情況請參考JIRA Ticket SERVER-21063。
什麼版本的MongoDB,什麼引擎?
3.2以上的WT引擎可以使用Compact來釋放空間,先前的版本無論是WT或MMAPv1都只能透過重新同步複製集的方式釋放空間。
問題是,生產環境一般來說沒有必要釋放,因為早晚還會佔回來,而且空閒的空間反正也會重用,如果不是真的缺那點空間,就別去釋放了。
至於是不是停機的問題,不止是這個問題,大部分時候都應該考慮複製集來解決,多個結點並行運行就是為了不停機準備的,拿掉一個下來做維護不會有多大的問題,拿主結點的時候可能會有幾秒鐘不可寫而已。
理論上說回收磁碟空間對效能不會有任何有益的影響。但在3.0.6和3.0.7所使用的WiredTiger引擎上發生過一個bug,在大量刪除文件時BTree會有錯誤的平衡從而導致效能嚴重下降。詳細情況請參考JIRA Ticket SERVER-21063。