Wiredtiger在MONGODB中的疑问是怎样的
Wiredtiger在MongoDB中的疑问是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
创新互联建站-成都网站建设公司,专注做网站、成都网站设计、网站营销推广,申请域名,网页空间,网站托管运营有关企业网站制作方案、改版、费用等问题,请联系创新互联建站。
MongoDB 中也有类似MySQL 的数据库引擎的插件化的概念,虽然MYSQL 被ORACLE 搞得现在对这个数据库的引擎认知都存在于INNODB,但实际上MYSQL 在之前的存储引擎还是丰富多彩的,MONGODB 的存储引擎也是如此,目前MONGODB 主推的(官方)的数据库引擎是 WIREDTIGER ,之前MONGODB 官方的数据库引擎是 MMAP1, 而实际上MONGODB 还有一个数据库引擎脚ROCKS DB,听说是不错,至少和WIRETIGER 平分秋色,甚至略胜一筹。
那今天我们主要来看看WIREDTIGER 为什么是目前MONGODB 的主力数据库引擎,有点在哪里,浅层的原理是什么。
可能看到图,传统DBA就会马上又一个反向,cursors ,一个性能差,有慢,应该被绝迹的词汇。 实际上在MONGODB 中,快速的返回结果其实cursors的功劳不小,首先不要用传统的数据库思维来去想MONGODB,他返回的数据结果集,要比传统的数据结果集大的多,(言外之意就是MONGODB 处理的数据量(吞吐)比传统数据库要大的多)。使用传统的方法,将结果集缓存在OUTPUT 这样显然对MONGODB 不是一个好的处理方式。
OK,我们不在此做过多纠缠,
和众多数据库一样,提高系统的性能,在于修改数据的时候并不是马上将磁盘的数据进行修改,而是通过多版本控制,来决定哪些数据应该被显示,哪些数据要被修改并刷盘,这里面通过 transactions 和 snapshots 来进行传统数据库的 MVCC的活动,而数据则通过 CACHE 给出。
同时wiredtiger与 mmvp1 引擎比较,有以下优势
1 比传统引擎更多使用 CPU CORES 和 内存
2 插入免锁逻辑,多线程不会阻塞
3 采用更高的压缩率,降低I/O的使用,提高I/O性能
4 将文件的 b+ TREE 放入 cache, 加快数据的读取
5 使用了Hazard pointers 来处理,dirty page 的问题,所以才成就了插入免锁逻辑
注:删除需要锁,所以MONGODB 中,删除操作应该好好考虑如何处理。
2 作为WIREDTIGER 中的两个日志系统,Journal and oplog ,系统他们的负责的任务是不同的,(如不清楚 Journal & oplog 是什么请百度),那么这里有一个问题,Journal 和 oplog 在记录日志的物理顺序是否一致。
答案是,oplog 与实际的操作顺序是一致的而 Journal log 与操作结果的顺序一致。这也是由于两者在对MONGODB 数据库在功能上的主责不同。一个是负责系统crash后的恢复,自然以结果为ORDER ,而OPLOG 则是要对 REPL负责,所以操作的顺序是ORDER。
最后,mongodb 的高速插入与wiredtiger使用的 lSM 也有关系,找一个时间可以研究一下 LSM的原理,可以更加理解MONGODB 插入速度快的秘诀。
关于Wiredtiger在MONGODB中的疑问是怎样的问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。
分享名称:Wiredtiger在MONGODB中的疑问是怎样的
转载来源:http://cdiso.cn/article/gpcopp.html