当前位置:Gxlcms > 数据库问题 > mongodb第十一篇文章~mongodb的引擎解读

mongodb第十一篇文章~mongodb的引擎解读

时间:2021-07-01 10:21:17 帮助过:32人阅读

一 简介 WiredTiger引擎调优技

二 两种引擎对比概念

  从3.2.x开始,WiredTiger成为默认的存储引擎。最为MongoDB目前最流行的存储引擎,WiredTiger与原先的MMAPV1相比有以下优势:

  1 性能&并发:在大多数工作负载下,WiredTiger的性能要比MMAPV1高很多。WiredTiger引擎为现代多核系统量身定制,更好地发挥多核系统的处理能力。MMAPV1引擎使用表级锁,因此,当某个单表上有并发的操作,吞吐将受到限制。WiredTiger使用文档级锁,由此带来并发及吞吐的提高。对于典型的应用,切到WiredTiger引擎,可带来5-10倍的性能提升。

 2  压缩&加密:MMAPV1引擎要求数据在内存和在磁盘的形式一致(map磁盘内存映射)。因此,它并不支持压缩和加密。WiredTiger并没有这层限制,可以更好地支持。

3   索引前缀压缩:WiredTiger存储索引时使用前缀压缩——相同的前缀只存一次。由此带来的效果是:索引更小了,对物理内存使用也更少了。

4   数据存储方式: 两种存储引擎采用了不同的存储引擎,是没办法直接替换软件目录进行升级的,只能初始化重新同步或者导入,wt引擎生产的数据和索引文件以wt为结尾,jr日志命名为WiredTigerPreplog开头1三 WiredTiger 参数

 一  wiredTigerCacheSizeGB=48
含义
   1 cacheSizeGB 指的就是Cache size,包括数据和索引。Mongod本身使用内存如连接池堆栈以及sorting buffer等都是额外的,不会被统计到这个数字里面。
   2 MongoDB在做诸如聚合、排序、连接管理等操作时需要额外的内存。因此,必须确保有足够的内存可供使用,否则,MongoDB进程有被OOM killer杀死的风险。
     和mysql的innodb_buffer_pool很像呢,数据索引放在内存里,排序需要额外的内存
2 推荐配置
   服务器内存X75%
3 查看状态命令
   db.serverStatus().wiredTiger.cache
二  wiredTigerDirectoryForIndexes=true
1  含义
    Index文件和数据文件分离,索引一个目录,数据一个目录。
    去具体的collection目录下可以发现
    collection index 两个目录
三  wiredTigerDirectoryForIndexes=true
1 含义
   是否开启索引的前缀压缩,这里影响所有DB的索引。它会一次存储所有前缀一样的索引,
   减少内存、磁盘IO的消耗,默认开启。
四  wiredTigerCollectionBlockCompressor=snappy
1 含义
   采用何种压缩方式 默认snappy 不建议采用zlib方式,会加重CPU的负担

五 以后有的会继续补充

mongodb第十一篇文章~mongodb的引擎解读

标签:使用   数字   对比   命名   snap   存储引擎   2.x   物理内存   存储方式   

人气教程排行