MONGODB 读书笔记

1. MONGODB不支持truncate操作,如果想快速删除一个集合的数据,只能drop后重建集合、索引。
2. 如果想改变oplog的大小现在还比较复杂,官方完全能做一个命令接口,一个操作就可以实现。    
3. MONGODB提供了数据预热方法,还不错。搜索MONGODB TOUCH了解这一内容。(db.runCommand({"touch" : "bc", "data" : true, "index" : true}) )
4. 如果RS里的一个节点启动的时候发现自身的OPLOG里没有任何内容,那么这个节点会做全量同步,必须保证到OPLOG里有一个记录(正常情况下总会有)。
5. MONGODB的初始化同步可能会极大的干扰到同步源上的正常的WORKING SET。可以考虑用备份来恢复。
6. 集群成员越多,选举的过程可能会越长。特别是网络拥堵,服务器LOAD过大的情况下。
7. RS的仲裁者角色相对于正常的备份节点来说并不会加速选举的过程。他就是一个RS的选举角色,在服务器资源不够的情况下,可以用它来打破平均数的情况,来满足最大数的原则。
8. MONGODB的预分配数据文件过程稍显复杂,MONGODB官方可以考虑做一个简单的接口,一步实现。
9. MONGODB中的RS回滚机制个人认为还不错,提供了一个回滚文件,由用户决定来下一步操作。
10. MONGODB的选举过程必须遵循大多数原则。一个备选节点如果遭遇任何一个否决票,选举都会取消,重新选举。
11. 主节点DOWN后,如果有一个存活的备份节点优先级较高,那么它一定会被选为主节点:如果数据不够新,会开始从其他节点复制,直到它到最新。
12. 先数据修改,后OPLOG,主备节点都是如此。这意味着延迟备份节点会延迟一段时间的OPLOG。?而不是先接受OPLOG然后等待复制。?
13. 如果想避免丢数据,避免回滚,可以通过RS的大多数方案来解决,通过getlasterror的w的 majority设置来规避。(个人认为不能完全避免,因为大多数操作不是一个原子操作)。
14. MONGO里有ORACLE里pctfree的东西,不过是个动态调整的东西,不可控。如果能大概确认一个文档的长度,可以在初始创建时候预分配一个虚拟字段把位先占了,后面更新时候移除这个字段。
15. MONGODB里对于随机值插入操作,列上索引分裂方式是5:5方式。有时候会发现随机插入列上的索引过大。不过ORACLE也是这样做的。
16. MONGODB运行情况下,echo 3到> /proc/sys/vm/drop_caches不会释放MONGODB的内存,必须关闭MONGO才可以。
17. journal的出现让mongodb的 repair和mongdb.lock不再有用。
18. mongostat里的idx miss%代表是索引的entry有多少没命中,不是代表有多少没走索引执行计划。
19.mongodb的复制可以做到并发多线程,不过是集合级别的(如果你的DB里只有一个集合,那么只能呵呵了,只能还是单线程复制,与MYSQL 5.6的多线程复制一样)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22034023/viewspace-1075504/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22034023/viewspace-1075504/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值