码迷,mamicode.com
首页 > 数据库 > 详细

mongodb第五篇文章~关于mongodb的两种引擎

时间:2017-10-15 19:33:34      阅读:312      评论:0      收藏:0      [点我收藏+]

标签:并发控制   poi   配置   redo log   周期性   tran   document   undo   bin   

简介:介绍mongodb的两种引擎和WAL技术

一 MMAPv1引擎:

    前注释:mmapv1引擎也是随着版本不断改进,所以只介绍大体的

    1 默认版本引擎:  mongodb <3.2

    2 锁级别: 1   Version < 2.2 : 只支持进程级锁,一个Mongod实例一个锁。

                    2  2.2 ≤ Version < 3.0 : 支持库级锁,一个db一把锁

                   3  Version> 3..0 collection级别

                    

    3 MVCC :  不支持 多版本并发控制

二  wiredtiger引擎

     1 默认版本引擎:mongodb >= 3.2

     2 锁级别:  document 级别(table) =》document-level concurrency( 文档级别的并发)

     3 MVCC:支持 多版本并发控制

     4 Checkpoint durability (周期性的checkpoint会生成数据集的镜像,这是灾难恢复的基础)

     5 Commit-level durability (开启WAL(记录在jonural日志中)日志记录后 对WT数据库的更新都会先写log,并进行周期性刷新,再修改数据,用于灾难恢复的根据)

     6 恢复机制 :具体策略为

  1. 每60s做一次checkpoint
  2. 开启write ahead log,当log size达到2GB时做checkpoint;并自动删除不需要的log文件。
  3. 每次commit_transaction时,调用fsync持久化已经commit的log
  4. 通过 checkpoint+wal日志记录 保证了mongodb的数据可靠性恢复

         基于上述配置,mongodb可以保证服务crash时,所有已经commit的操作都能通过log恢复

三 日志文件对应的理解

    1 mongodb oplog => mysql binlog

    2 mongodb WAL =>  mysql undo+redo log

四  WAL技术解读 

      WAL即 Write-Ahead Logging,是一种实现事务日志的标准方法。WAL 的中心思想是先写日志,再写数据,数据文件的修改必须发生在这些修改已经记录在日志文件中之后。采用WAL日志的数据库系统在事务提交时,WAL机制可以从两个方面来提高性能:

  • 多个client写日志文件可以通过一次 fsync()来完成
  • 日志文件是顺序写的,同步日志的开销要远比同步数据页的开销要小

      总体来说,使用了WAL机制之后,磁盘写操作只有传统的回滚日志的一半左右,大大提高了数据库磁盘I/O操作的效率,从而提高了数据库的性能。

  采用了WAL机制,就不需要在每次事务提交的时候都把数据页冲刷到磁盘,如果出现数据库崩溃, 我们可以用日志来恢复数据库,任何尚未附加到数据页的记录都将先从日志记录   中重做(这叫向前滚动恢复,也叫做 REDO).WAL日志模式提供checkpoint操作,来定时进行数据更新操作

五 关于引擎方面还有很多不太懂的地方,有兴趣的可以留言交流

     

    

   

     

                                       

mongodb第五篇文章~关于mongodb的两种引擎

标签:并发控制   poi   配置   redo log   周期性   tran   document   undo   bin   

原文地址:http://www.cnblogs.com/danhuangpai/p/7672790.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!