Mongo管理

MongoDB存储引擎

  一. WiredTiger引擎

    1.  MongoDB3.2版本以上,设置为存储引擎。

    2. 基于文档级别的并发控制功能(锁机制)

      (1).    锁级别:文档级别

      (2).  如何监控锁的信息

          db.serverStatus().lock

          db.currentOp()

          mongotop

          mongostat

          (前两条在MongoDB里执行,后两条在bin目录下执行)

          测试数据:for(var i=1;i<=1000000;i++){
                 db.testlock.insert({"_id":i,"action":"Write new documentatition","currentNumber":i});
                 }

    3.检查点机制:checkpoint

      (1).  当MongoDB发生检查点以后,以一致性的方式(快照)把内存中所有的脏数据写到数据文件上

      (2). 什么时候发生检查点

        a.时间间隔:60秒

        b.日志文件大小(journal日志):2G

MongoDB存储过程

 

正常流程:客户端插入文档------->内存中保存文档,并将对应的操作写入journal日志中------->产生检查点------->内存中数据写入磁盘

服务器宕机:当服务器挂掉以后内存中未被保存的数据丢失,MongoDB到journal日志中查找日志内容,找回丢失的数据,待到检查点产生以后在写入磁盘。

  4.预写日志,数据压缩,数据加密

    (1).  预写日志:当插入数据的时候,首先将数据信息对应的日志写到日志文件中(journal);一旦产生检查点,将内存中的数据写入到数据文件中

      (2). 数据压缩:3.0后版本中,提供三个压缩选项

        *无压缩

        *Snappy:默认压缩方式

        *zlib:类似gzip

    一个小栗子:db.createCollection("email",{storageEngine:{wiredTiger:{configString:'block_compressor='zlib''}}})

  5.其他功能:

    (1).设置有效内存使用:   

      (*)内部缓存: 大小: 默认 1G或者 50% RAM ~ 1G
          --wiredTigerCacheSizeGB arg      maximum amount of memory to allocate
                             for cache; defaults to 1/2 of physical RAM

      (*)文件系统缓存

  (2)空间的回收
    (*)当删除数据(文档、集合)后,MongoDB并不会将空间释放会OS
    (*)会在数据文件中,维护空的列表信息(当下次再这个集合中进行添加操作时,MongoDB不需要再去OS请求内存空间,可以直接使用维护的的空列表信息,这样就提升了性能)
    (*)使用命令:compact 回收空间
        db.runCommand({compact:'集合'})
      一个🌰:对员工表回收空间: db.runCommand({compact:'emp'})

  二、MongoDB也会将对应的日志存入Journal日志中,防止数据的丢失。   

      1、以WiredTiger进行介绍   

      2、每个Journal日志大小:100M  

      3、启动MongoDB的时候,默认启用日志记录 参数:--journal

posted @ 2019-01-22 08:59  X小白的逆袭之旅  阅读(231)  评论(0编辑  收藏  举报