MongoDB - 数据库/集合碎片级别

MongoDB - 数据库/集合碎片级别

最近,我的一个系列出现了性能问题。
一时兴起(感谢本文),我决定尝试压缩(如官方文档)。
这非常有效。但是,我现在想知道我应该多久做一次。
由于压缩不是一项完全在线的任务(我只能在被动节点上执行),我不能决定每晚都这样做然后忘掉它。

我找不到任何关于了解数据库/集合何时具有高碎片率的文档。您是否有确定数据库碎片级别的经验(基准测试除外)?

笔记:我指的是文件内部空间中的“内部”碎片,而不是文件分布在磁盘上的“外部”碎片。

答案1

可以通过 db.stats 比较集合中的数据大小来确定压缩级别。dataSize告诉您集合中有多少数据,其中storageSize告诉您文件有多大。dataSize <= storageSize,但差异有多大应该告诉您通过压缩可以获得多少收益。

Mongo 不允许对象不完全共置,因此您不会遇到对象分散在数据文件中的情况。如果对象超出其可用分配,则整个对象必须在更大的位置重写。

当我使用 Mongo 数据库时,我们只需要在季度维护窗口中进行一次压缩。但是,我们的数据集没有大量的删除,所以我们不会经常产生空白。要确定您的速率,请跟踪这两个 dbStats 值并查看它们随时间的变化情况。

相关内容