1 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
不需要導(dǎo)出再導(dǎo)入,使用repairDatabase
?或者?compact
?都會(huì)壓縮數(shù)據(jù)。但是他們運(yùn)行中對(duì)性能有影響。
The repairDatabase command compacts all collections in the database. It is identical to running the compact command on each collection individually.
需要注意的是compact
不會(huì)像repairDatabase
那樣釋放已經(jīng)申請(qǐng)的磁盤(pán)空間,但是新的磁盤(pán)請(qǐng)求會(huì)使用整理出來(lái)的空間。另一個(gè)要注意的是,這兩個(gè)命令都需要額外的空間,參見(jiàn)?dick usage 一節(jié)。這也就是說(shuō),如果磁盤(pán)空間已經(jīng)滿了,這兩個(gè)命令也用不了。不過(guò)這時(shí),可以重新同步一個(gè)從結(jié)點(diǎn),重建磁盤(pán)數(shù)據(jù)。
如果在replica set中使用repairDatabase
或者compact
的話,最好采用 rolling 的方式。 Rolling 的方式就是先把一個(gè)從結(jié)點(diǎn)(secondary)拿出來(lái),整理磁盤(pán)。然后在所有的從結(jié)點(diǎn)上重復(fù)以上步驟。最后撤換主結(jié)點(diǎn) (step down primary),然后在其上整理磁盤(pán)。這樣可以避免這些操作對(duì)線上服務(wù)的影響。
推薦使用?usePowerOf2Sizes
?讓 MongoDB 在頻繁更新刪除下能更有效的使用磁盤(pán),因?yàn)槊看蔚纳暾?qǐng)和釋放都是2的冪次的大小。
- 1 回答
- 0 關(guān)注
- 1036 瀏覽
添加回答
舉報(bào)