zoukankan      html  css  js  c++  java
  • mongodb 系列 ~ WT引擎

      1 版本支持   WT 引擎 3.2版本之后,默认引擎

      2 锁粒度

           0 读是共享锁 写是排它锁
           1 针对写锁:WT引擎锁粒度是基于文档级别,同一DB下的不同文档可以并发访问,但是当多个写操作修改同一个文档时,必须以序列化方式执行,如果该文档正在被修改,其他写操作必须等待,直到在该文档上的写操作完成之后,其他写操作相互竞争,获胜的写操作在该文档上执行修改操作。
            2 针对读锁: 多个读操作是可以并发的,但是当有写操作时就会阻塞读操作,直到完成
      3 参数与特性
        config- cache_size=512M
       1 cacheSizeGB 指的就是Cache size,包括数据和索引。
       2 MongoDB在做诸如聚合、排序、连接管理等操作时需要额外的内存。因此,必须确保有足够的内存可供使用,否则,MongoDB进程有被OOM killer杀死的风险。
       3 查看状态命令 db.serverStatus().wiredTiger.cache
       4 cacheSizeGB默认值是(RAM – 1GB) / 2 推荐设置
       config-directoryForIndexes:true
       1 将数据和索引进行分开目录存储
       config-blockCompressor:snappy
      1 snappy消耗cpu少,zlib压缩率更高,但是消耗更多cpu config-prefixCompression: true
    4 配置文件一览
     engine: wiredTiger
         wiredTiger:
           engineConfig:
              cacheSizeGB: 10
              directoryForIndexes: true
          collectionConfig:
             blockCompressor: zlib
          indexConfig:
             prefixCompression: true
    5  事务三种隔离级别
        RU  RC  串行化
     6  恢复机制
         核心机制:
            一是将内存里面发生修改的数据写到数据文件进行持久化保存,确保数据一致性;
            二是实现数据库在某个时刻意外发生故障,再次启动时,缩短数据库的恢复时间
        生成checkpoint点时机 
    • 按一定时间周期:默认60s,执行一次checkpoint;
    • 按一定日志文件大小:当Journal日志文件大小达到2GB(如果已开启),执行一次checkpoint;
    • 任何打开的数据文件被修改,关闭时将自动执行一次checkpoint。
     7  WT 引擎文件组成
         1 db目录-包含默认库(local,admin,config)
         2 jonurnal目录-journal
         3 diagnostic.data目录-收集服务器信息目录,暂时无法手动进行分析
         4  WiredTiger.wt文件是mongoDB的元数据文件,存储了其他数据库表的元数据信息。
         5   _mdb_catalog.wt : 里存储了所有集合的元数据,包括集合对应的WT table名字,集合的创建选项,集合的索引信息等,WT存储引擎初始化时,会从_mdb_catalog.wt里读取所有的集合信息,并加载元信息到内存
         6  sizeStorer.wt-存储所有集合的容量信息,如文档数,文档总大小等-感觉像myisam的元数据
         7  WiredTiger WiredTiger.turtle 都是引擎配置文件-引擎启动的相关加载内存参数(个人理解)
         8  lock 分为mongo和wt 理解的就是内部wt也启动一个相应进程、 
          总结 大体分为 元数据存储信息文件和引擎配置文件和启动lock文件
    八  WT和tickets
        1 WiredTiger使用tickets来控制可以同时被存储引擎处理的读/写操作数。默认值都是128
        2 db.serverStatus().wiredTiger.concurrentTransactions 可以观察读写tickets的消耗情况
        3 db.adminCommand( { setParameter: 1, wiredTigerConcurrentRead/WriteTransactions: xx } ) 进行调节读写操作数限制
    九  内存结构
        1 WT引擎内存cachesize推荐为总内存的一半,剩下的内存会优化数据库服务
          OS FILE->FS CACHE->WT CACHE(这层才是可读的数据)
       2 注意脏页的占比,最好不要超过5%->通过mongostat观察分析dirty占有率->ditry page
          如果脏页比太高,要么提高磁盘性能 要么做业务限流
       3 注意 读缓存使用率不能超过80%->通过mongostat观察分析used占有率-> clean page

  • 相关阅读:
    pillow模块的用法 + 随机验证码
    jquery文件阅读器 显示需要上传图片的预览功能
    pycharm永久激活方式
    pycharm汉化
    10.25网络编程到并发编程
    10.15 迭代器,生成器到常用模块的小结
    10.14 面向对象小结
    十一天学习内容总结大纲
    pip镜像源的替换
    前端jQuery导入方式
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/10571158.html
Copyright © 2011-2022 走看看