我最近有一个performance问题与我的一个collections。
一时兴起(感谢这篇文章 ),我决定尝试压缩( 正式文档中写的)。
这工作出色。 但是,我现在想知道我应该多久做一次。
由于压缩不是一个完全的在线任务(我只能在被动节点上完成),所以我不能决定每天晚上都这么做,而忘记了这一点。
我找不到任何关于了解DB /集合何时具有高碎片率的文档。 你有什么经验来确定数据库的碎片级别(除了基准testing)?
注意 :我在文件内部的空间中讨论的是“内部”碎片,而不是“外部”碎片,就像文件在磁盘上传播一样。
压缩级别可以通过比较db.stats集合中的数据大小来确定。 dataSize为您提供了多less数据在集合中,其中storageSize告诉您这些文件有多大。 dataSize <= storageSize,但差别有多大,应告诉你通过压缩会获得多less收益。
Mongo不允许对象不能完全放在一起,所以你不会得到一个对象分散在数据文件中的情况。 在这种情况下,如果一个对象的扩展超过了自由分配的范围,那么整个对象就必须被重写。
当我玩Mongo数据库时,我们只需要在每个季度的维护窗口中进行压缩。 但是,我们的数据集没有大量的删除,所以我们并没有经常创build空白。 要计算出您的费率,请跟踪这两个dbStats值并查看它们随时间的变化。