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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb第五篇文章~关于mongodb的两种引擎相关的知识,希望对你有一定的参考价值。

简介:介绍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的两种引擎的主要内容,如果未能解决你的问题,请参考以下文章

mongodb一对n关系中的两种导航

启动MongoDB报version `OPENSSL_1.0.2‘ not found的两种解决办法

在 SQL 中选择范围的两种方法,在 MongoDB 中只有一种?

如何使用python在mongodb的两种不同类型的字段或索引或标题中搜索值?

Mongodb中数据聚合之聚合管道aggregate

Scrapy学习第五课