当前位置:   article > 正文

详解MongoDB的Compact操作(转)

mongod 执行compact好慢

转自 http://blog.nosqlfan.com/html/3282.html

在过去,我们只能通过repairDatabase()命令来对数据进行压缩,而repairDatabase()命令只能对整个DB进行压缩,新的压缩命令(compact command)可以针对单个Collection分别进行压缩,其好处是显而易见的。

  • 由于只压缩需要的Collection,所以压缩期间产生的临时文件会小很多
  • 压缩会去除Collection所在文件的碎片
  • 同样,其重建索引的代价也变小了,对内存的需求也就变小了

具体用法:

> db.yourCollection.runCommand("compact");
> db.runCommand({ compact : 'yourCollection' });

对于compact命令,有两点需要注意:

  • Compact操作进行中,会blocks掉所有在当前Collection上的操作,所以Compact操作最好在业务低估的时候进行。
  • 你可以在一个Replica Sets的secondary上进行数据压缩,不过在压缩过程中,这个节点会变成不能服务的recovery模式。
  • 运行Compact操作后,当前Collection的Padding Factor会变成1,后续如果有使数据变长的更新操作,可能会在一段时间内比较慢。
  • Capped Collection是不能进行Compact操作的,原因嘛,因为Capped Collection本身就没有碎片存在。

这里有一个脚本,提供对Primary节点的压缩,自动完成了stepDown,压缩操作。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/407801
推荐阅读
相关标签
  

闽ICP备14008679号