设为首页 收藏本站
查看: 877|回复: 0

[经验分享] MongoDB 2.0新功能逐个看——Compact Command

[复制链接]

尚未签到

发表于 2015-7-7 06:44:05 | 显示全部楼层 |阅读模式
    今天到了公司打开邮箱,惊喜地发现有MongoDB的新闻信,打开一看竟然是2.0更新了,哈哈,于是迫不急待地开始尝试,因为我平时主要只维护数据库,并不涉及开发部分,所有理解有限,大部分还是以翻译为主:p。以下为官方文档地址:http://www.mongodb.org/display/DOCS/2.0+Release+Notes?mkt_tok=3RkMMJWWfF9wsRonv6TPZKXonjHpfsX%2B6eopWKag38431UFwdcjKPmjr1YICRMt0dvycMRAVFZl5nV0IHeWb#2.0ReleaseNotes-Journalingenhancements
  
  

  • What's New

    • Compact Command
    • Concurrency Improvements
    • Default Stack Size
    • Index Performance Enhancements
    • Sharding Authentication
    • Replica Sets

      • Priorities
      • Data-center awareness
      • w : "majority"
      • Reconfiguration with a minority up
      • Primary checks for a caught up secondary before stepping down
      • Extended shutdown on the primary to minimize interruption
      • Maintenance Mode

    • Geospatial Features

      • Multi-location documents
      • Polygon searches

    • Journaling enhancements
    • New ContinueOnError option for bulk insert
    • Map Reduce

      • Output to a sharded collection
      • Performance improvements

    • New Querying Features

      • Additional regex options: s
      • $and

    • Command output changes
    • Shell features

      • Custom prompt
      • Default shell init script




1.Compact Command整理命令
    事实上我也不知道到底应该将这个命令翻译成什么比较合适,它的作用是整理collection,将其中的内容全部抽出后重新排列整齐,有点类似系统的磁盘整理,所以我就这么叫它了。在2.0版本之前,需要进行类似的操作,要使用整理命令是以collection为单位进行操作的。使用这个命令的方法有两种:
a) db.runCommand({compact:'myCollcetionName'})
b) db.mycollction.runCommand("compact")
    这个命令要等完成后才会返回状态,可以通过mongod的log文件来查看过程纪录,或是在另一个mongo实例中通过命令db.currentOp()远程查看正在进行整理的collection的在内存中的状态。需要特别注意的是,在运行这个命令时是无法进行其它操作的,所以推荐在Replica Sets中使用。同时,在Replica Sets中使用时,也有一些要注意的是:
a) 对于Replica Sets中的Primary instance,直接运行这个命令会报错,需要使用force:true作参数来强制运行,所以并不建议在Primary上运行。
b) 对于Replica Sets中的Secondary instance,开始运行这个命令时,该instance会自动降为"recovery"状态,直到命令完成。
c) 在整个Replica Set中,需要在每上instance上分别进行Compact操作,这种整理的行为并不会自动同步。

  官方文档上提供的说明是进行Compact操作带来的明显效果是能去掉了数据库中所有的Padding Factor,Padding Factor是Mongo为了提高数据操作的效率而预留的一部分磁盘空间,所以说其实Compact功能并不完全适合需要经常进行数据更新的Collection,但是对于比较稳定不常进行update操作的数据库来说,还是可以提高查询速度的。
  另外在杀掉Compact进程时要特别注意的,Compact操作是将所有的内容从一个Collection中取出,最后再将它们在collection中重建,所以中断这个Compact会带来数据丢失。此时就需要Journal来减少这种损失了。Journal在1.9+时就作为一个重点的测试功能出现了,因为考虑到它还不稳定,我没敢在实际项目中试用它,只作了一些小测试,2.0中它已经是正式出道了,我会好好地疼爱它的= v =,以上内容基本上取自官方文档,我会在随后附上实际实验。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-83853-1-1.html 上篇帖子: 基于Mongodb进行分布式数据存储【转】 下篇帖子: MongoDB学习笔记(3)--高级查询
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表