我將mongo里面大量多余的數據都刪除后,發現內存和文件并沒有收縮,仍然占用大量內存和硬盤,性能變化不大,請問,mongodb怎么進行碎片整理?
1 回答

炎炎設計
TA貢獻1808條經驗 獲得超4個贊
什么版本的MongoDB,什么引擎?
3.2以上的WT引擎可以使用Compact來釋放空間,之前的版本無論是WT還是MMAPv1都只能通過重新同步復制集的方式釋放空間。
問題是,生產環境一般來說沒有必要釋放,因為早晚還會占回來,而且空閑的空間反正也還會重用,如果不是真的缺那點空間,就別去釋放了。
至于是不是停機的問題,不止是這個問題,大部分時候都應該考慮復制集來解決,多個結點并行運行就是為了不停機準備的,拿掉一個下來做維護不會有多大的問題,拿主結點的時候可能會有幾秒鐘不可寫而已。
理論上說回收磁盤空間對性能不會有任何有益的影響。但是在3.0.6和3.0.7所使用的WiredTiger引擎上發生過一個bug,在大量刪除文檔時BTree會有錯誤的平衡從而導致性能嚴重下降。
- 1 回答
- 0 關注
- 1104 瀏覽
添加回答
舉報
0/150
提交
取消