摘要: compact操作步骤很多,但是可以有效减少磁盘使用量。

MongoDB与磁盘
当Fundebug处理的数据越来越多,这导致MongoDB的磁盘使用量越来越多,增长也越来越快。于是,我开始定时删除过期数据,优化算法减少冗余数据。但是,我发现,单纯删除文档不能减少MongoDB磁盘使用量。这是为什么呢?下面是官方文档的解释:
对于WiredTiger存储引擎(mongodb 3.2之后默认使用):How do I reclaim disk space in WiredTiger?
The WiredTiger storage engine maintains lists of empty records in data files as it deletes documents. This space can be reused by WiredTiger, but will not be returned to the operating system unless under very specific circumstances.
也就是说,被删除的文档所占用的磁盘空间仍然由MongoDB保留,不会释放。对于旧版MongoDB的MMAPv1存储引擎,这一点也是一样的。这样做无可厚非,因为数据库将会不断存储

本文详细介绍了MongoDB的compact操作,用于在删除大量文档后释放磁盘空间。该操作会重新整理数据,减少碎片并可能释放空闲磁盘空间。尽管compact会阻塞读写并在执行期间需要额外空间,但它可以显著减少数据库的体积。执行compact需谨慎,避免在业务高峰期进行,并确保在复制集中正确处理各节点。
最低0.47元/天 解锁文章
2277

被折叠的 条评论
为什么被折叠?



