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. 【SpringBoot】12.全局配置文件(properties)与yml配置文件

    一.SpringBoot全局配置文件 1.修改内嵌容器端口号 #application.properties server.port=8888 2.自定义属性的配置 使用@Value来给成员变量赋值 ...

  2. Collection迭代器Iterator的使用

    package com.cx.Collecion; import java.util.ArrayList; import java.util.Collection; import java.util. ...

  3. 微服务接口设计(RESTful规范)

    微服务的接口设计(RESTful规范) 基本知识 URI:在RESTful架构中,每个URI代表一种资源 URI规范: 不用大写 用中杠-,不用下划线_ 路径中不能有动词,只能有名词 名词表示资源集合 ...

  4. uboot——初始化阶段

    start.S |-------------设置cpu状态 |--------------开cache |--------------获得启动方式 |------------------------- ...

  5. uboot分析——初始化

    1.start.S 初始化 icache 看门狗 时钟 DDR 设置栈 初始化串口,并打印 OK 以上完成 lowlevel_init -------------------------------- ...

  6. 头秃了,二十三张图带你从源码了解Spring Boot 的启动流程~

    持续原创输出,点击上方蓝字关注我 目录 前言 源码版本 从哪入手? 源码如何切分? 如何创建SpringApplication? 设置应用类型 设置初始化器(Initializer) 设置监听器(Li ...

  7. 基于docker部署ceph以及修改docker image

    前言 容器和ceph的结合已经在一些生产环境当中做了尝试,容器的好处就是对运行环境的一个封装,传统的方式是集成为ISO,这个需要一定的维护量,而容器的相关操作会简单很多,也就有了一些尝试,个人觉得如果 ...

  8. K8S环境的Jenkin性能问题描述

    Return Homezq2599 CnBlogsHomeContactAdminPosts - 75 Articles - 0 Comments - 16 K8S环境的Jenkin性能问题处理 环境 ...

  9. Monitor的扩展支持string的超时锁

    对Monitor的使用可以防止lock的时间过长并且可以设置其对应的超时时间达到对预期代码的一个控制,合理的使用timeout可以有助于程序的健壮性.但是对于不同的并发程序可能某些时候我们需要的粒度是 ...

  10. MSSQL渗透测试

    mssql-getshell 来源:独自等待,知乎,github xp_cmdshell 第一种:在SQL Server 2005之前版本中,xp_cmdshell是默认开启的,因此可以直接利用,执行 ...