免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4343 | 回复: 1

[MongoDB] 详解MongoDB的Compact操作 [复制链接]

论坛徽章:
0
发表于 2012-02-22 15:00 |显示全部楼层
详解MongoDB的Compact操作





MongoDB 2.0 正式版已经发布了,具体改进可以参考本站之前的文章,2.0中的一点改进是提供了一个压缩命令Compact,此命令支持针对单个Collection的压缩。下面我们就讲一讲Compact命令的一些知识。

在过去,我们只能通过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,压缩操作。


论坛徽章:
0
发表于 2012-02-24 17:35 |显示全部楼层
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP