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,压缩操作。
分享到:
相关推荐
### MongoDB数据库管理详解 #### 一、MongoDB简介与安装部署 MongoDB是一款非常流行的开源文档型NoSQL数据库系统,以其高性能、高可用性及易扩展性受到广泛好评。它适用于处理大规模的数据集,能够轻松地存储结构...
### MongoDB回收磁盘空间方案详解 #### 一、前言 MongoDB作为一种广泛使用的NoSQL数据库,因其灵活性和高性能而在众多领域中得到了广泛应用。但在实际使用过程中,可能会遇到磁盘空间管理的问题,尤其是在删除大量...
MongoDB的`compact`命令是对集合中的所有数据和索引进行重写和碎片整理的操作。这会重新排列数据,合并碎片,并清理空闲空间。然而,需要注意的是,`compact`命令在MMAPv1存储引擎上仅执行碎片整理和重建索引,而不...
在WiredTiger中,可以使用`db.runCommand({compact: 'collectionName', force: true})`命令来手动压缩特定集合。 - 在生产环境中,为避免数据丢失,建议在进行此类操作前备份数据。 六、总结 MongoDB集群重构和...
【知识点详解】 Ajax许愿墙是一个基于Web的交互式应用,利用Ajax技术实现了用户无需刷新页面即可发送和查看愿望的功能。Ajax(Asynchronous JavaScript and XML)是一种在不重新加载整个网页的情况下更新部分网页...
《Kooboo CMS数据库配置详解》 Kooboo CMS是一款强大的内容管理系统,它以其易用性、灵活性和高效性赢得了广大用户的喜爱。在Kooboo CMS的运行过程中,数据库扮演着至关重要的角色,它是存储和管理网站内容的核心。...
标题 "[信息办公]AJAX版CD管理系统_ajaxcd.rar" 暗示了这个压缩包包含了一个用于信息办公环境的CD(可能是Content Delivery或Compact Disc)管理系统的AJAX实现。AJAX(Asynchronous JavaScript and XML)是一种创建...