亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用MongoDB如何改善數據空洞

使用MongoDB如何改善數據空洞

臨摹微笑 2018-08-17 18:10:39
數據空洞指的是,一個表經歷了頻繁的update和delete后,其數據文件的尺寸大于其數據實際尺寸。比如show dbs看到一個庫為400G,導出再導入后就只有250G。
查看完整描述

1 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

不需要導出再導入,使用repairDatabase?或者?compact?都會壓縮數據。但是他們運行中對性能有影響。

The repairDatabase command compacts all collections in the database. It is identical to running the compact command on each collection individually.

需要注意的是compact不會像repairDatabase那樣釋放已經申請的磁盤空間,但是新的磁盤請求會使用整理出來的空間。另一個要注意的是,這兩個命令都需要額外的空間,參見?dick usage 一節。這也就是說,如果磁盤空間已經滿了,這兩個命令也用不了。不過這時,可以重新同步一個從結點,重建磁盤數據。

如果在replica set中使用repairDatabase或者compact的話,最好采用 rolling 的方式。 Rolling 的方式就是先把一個從結點(secondary)拿出來,整理磁盤。然后在所有的從結點上重復以上步驟。最后撤換主結點 (step down primary),然后在其上整理磁盤。這樣可以避免這些操作對線上服務的影響。

推薦使用?usePowerOf2Sizes?讓 MongoDB 在頻繁更新刪除下能更有效的使用磁盤,因為每次的申請和釋放都是2的冪次的大小。


查看完整回答
反對 回復 2018-08-26
  • 1 回答
  • 0 關注
  • 1028 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號