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. Json Master masters JSON!

    对于一个软件开发人员, JSON 是最熟悉的东西之一了, 每一个开发人员基本上每一天都会跟 JSON 打交道. 作为一个大前端开发人员, 当看到从服务器返回的 JSON 数据时, 尤其是大数据量或者复 ...

  2. Java注解(入门级)

    Java注解 前言 近日在阅读开源项目,发现项目里好多奇奇怪怪的注解(@DataScope.@Log...)看得我一脸懵,不知道大家是否也有过这样的经历,回想了一下,发现自己对于注解的知识,好像只停留 ...

  3. .NET 5 和 C#9 /F#5 一起到来, 向实现 .NET 统一迈出了一大步

    经过一年多的开发,Microsoft 于北京时间 11 月 11 日(星期三)发布了其 .NET 5软件开发平台,强调平台的统一,并引入了 C# 9 和 F# 5 编程语言,新平台朝着桌面.Web.移 ...

  4. 探索 .Net Core 的 SourceLink

    介绍 Source Link是一组软件包和一个规范, 它将一些元数据添加到PDB文件,以将本地文件重新映射到GitHub上的文件,因此Visual Studio可以在这需要时下载文件, 该项目的目的是 ...

  5. 幻读在 InnoDB 中是被如何解决的?(转)

    在MySQL事务初识中,我们了解到不同的事务隔离级别会引发不同的问题,如在 RR 级别下会出现幻读.但如果将存储引擎选为 InnoDB ,在 RR 级别下,幻读的问题就会被解决.在这篇文章中,会先介绍 ...

  6. 信号发送接收函数:sigqueue/sigaction

    信号是一种古老的进程间通信方式,下面的例子利用sigqueue发送信号并附带数据:sigaction函数接受信号并且处理时接受数据. 1.sigqueue: 新的信号发送函数,比kill()函数传递了 ...

  7. ubuntu13.04修改默认启动内核

    ubuntu下面的启动内核选项跟其他操作系统不一样,有个子菜单,比如我在默认的ubuntu13.04上安装了一个新的内核3.14.5,那么默认的第一项是3.14.5内核,第二项是一个子菜单,第二项里面 ...

  8. 定制ubuntu的时候修改proseed

    一个参数的修改 d-i clock-setup/utc-auto boolean false (不用utc) d-i clock-setup/ntp boolean false (不时间同步) d-i ...

  9. JVM初识

    先来看一张图 首先jvm是什么? jvm是java运行环境的一部分,是一种以软件模式虚拟出来的一个计算机系统. 如上图所示,JVM 主要分为三个子系统:类加载器.运行时数据区和执行引擎. 类加载器子系 ...

  10. 解决Ubuntu配置nginx出现的问题

    Ubuntu18.04配置nginx出现的各种错误 缺少pcre库 编译nginx 出现错误 安装pcre库,出现错误 手动编译安装pcre库 (1)下载并解压pcre库 wget https://f ...