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

Mongo管理的更多相关文章

  1. mongo管理工具

    启动 D:\Program Files\MongoDB\Server\3.4\bin\mongod.exe --dbpath d:\data\db 还原 D:\Program Files\MongoD ...

  2. MongoDB基础

    1.概念及特点 说明:由于部分语句中$ 符号无法正常显示,使用¥代表 概念 MongoDB是一个基于文档的分布式的开源的NoSQL数据库,文档的结构为BSON形式,每一个文档都有一个唯一的Object ...

  3. NodeJs中数据库的使用

    另一遍通用的NODEJS数据库方法koa,express,node 通用方法连接MySQL 1.Node.js 连接 MySQL $ cnpm install mysql 连接mysql: var m ...

  4. Node.js:连接 MongoDB

    ylbtech-Node.js:连接 MongoDB 1.返回顶部 1. Node.js 连接 MongoDB MongoDB是一种文档导向数据库管理系统,由C++撰写而成. 本章节我们将为大家介绍如 ...

  5. node12---mongodb

    一.传统数据库技术回顾 数据库就是存储数据的,那么存储数据就用txt就行了啊,为什么要有数据库? 理由之1: 数据库有行.列的概念,数据有关系,数据不是散的. 老牌数据库,比如MySQL.SQL Se ...

  6. Node.js Learning Notes

    简介 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱动I/O服务 ...

  7. Dapps-是一个跨平台的应用服务商店

    简介 Dapps 是一个跨平台的应用商店,包含众多软件,基于docker dapps是什么? 它是一个应用程序商店,包含丰富的软件,因为基于docker,使你本机电脑有云开发的效果. 一键安装程序:多 ...

  8. Mongo 用户创建及权限管理

    Mongo版本3.0之前使用的是db.addUser(),但3.0之后使用的是db.createUser() 内建的角色: 数据库用户角色:read.readWrite; 数据库管理角色:dbAdmi ...

  9. mongo 3.4分片集群系列之八:分片管理

    这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...

随机推荐

  1. PAT Saving James Bond - Easy Version

    Saving James Bond - Easy Version This time let us consider the situation in the movie "Live and ...

  2. 对比JAVA、Python、C、Go运行时间,我惊呆了!!!

    对比JAVA.Python.C.Go运行时间,我惊呆了!!! 周末在寝室刷完算法,想放松一下,于是做了一个实验:用现在主流的几种编程语言对0 - (10000000 - 1)求和,结果我惊呆了,话不多 ...

  3. leetcode99:n-queens

    题目描述 N皇后问题是把N个皇后放在一个N×N棋盘上,使皇后之间不会互相攻击. 给出一个整数n,返回n皇后问题的所有摆放方案 例如: 4皇后问题有两种摆放方案 [".Q..",  ...

  4. 深度探秘.NET 5.0

    今年11月10号 .NET 5.0 如约而至.这是.NET All in one后的第一个版本,虽然不是LTS(Long term support)版本,但是是生产环境可用的. 有微软的背书,微软从. ...

  5. vscode remote wsl 的NoPermissions permission denied问题

    在 wsl这个目录  code-insiders . 之后会报这个错 无法打开"wsl": Unable to read file (NoPermissions (FileSyst ...

  6. PyCharm离线安装PyQt5_tools(QtDesigner)

    目录 下载所需的whl包 安装whl 配置PyCharm 测试 下载所需的whl包 打开链接 PyPI,依此搜索 python_dotenv,PyQt5_sip,PyQt5,pyqt5_tools:基 ...

  7. symbol lookup error /usr/lib/x86_64-linux-gnu/libstdc++.so.6错误的解决办法

    当出现 $ apt-get: symbol lookup error: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: undefined symbol: _ZNS ...

  8. springboot linux打包后访问不到resources 下面的模板文件

    在本地是可以直接获取模板文件并下载,但是服务器上就不行 本地代码: @Overridepublic void downArchRelayTemplate(HttpServletRequest requ ...

  9. JXLS2.4导出Excel

    1.添加依赖:http://mvnrepository.com/artifact/org.jxls <dependency>     <groupId>org.jxls< ...

  10. Vue 计算属性与方法

    computed 基本使用 如果数据需要有复杂的计算,则可以在Vue实例中定义计算属性,再交由mustache进行渲染. computed内部其实是通过getttr实现的,所以不用加括号即可完成其下方 ...