使用MongoDB如何改善数据空洞
PHPz
PHPz 2017-04-22 08:56:10
0
1
825

数据空洞指的是,一个表经历了频繁的update和delete后,其数据文件的尺寸大于其数据实际尺寸。比如show dbs看到一个库为400G,导出再导入后就只有250G。

PHPz
PHPz

学习是最好的投资!

全部回覆(1)
洪涛

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

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

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

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

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板