MongoDB存储引擎
来源:互联网 发布:transmission windows 编辑:程序博客网 时间:2024/05/22 17:20
在2015/3/17以前,MongoDB只有一个存储引擎,叫做MMAP,MongoDB3.0的推出使得MongoDB有了两个引擎:MMAPv1和WiredTiger。
- MMAPv1:适应于所有MongoDB版本,MongoDB3.0的默认引擎
- WiredTiger:仅支持64位MongoDB
MongoDB两种引擎可以互相切换,我们可以在创建服务的时候指定引擎类型。语句如下:
MMAPv1
sc.exe create MongoDB binPath= "\"E:\Program Files\MongoDB\Server\3.0\bin\mongod.exe\" --service --directoryperdb --config=\"E:\Program Files\MongoDB\Server\3.0\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
WiredTiger
sc.exe create MongoDB binPath= "\"E:\Program Files\MongoDB\Server\3.0\bin\mongod.exe\" --service --directoryperdb --storageEngine=wiredTiger --config=\"E:\Program Files\MongoDB\Server\3.0\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
- MMAPv1引擎
MMAPv1预分配策略
MongoDB为了保证连续的存储空间,避免磁盘碎片问题会预分配空间。
工作方式是这样的:在创建数据库时,系统会创建一个名为[dbName].0的文件,该文件固定大小为64M,当该文件有一半以上被使用时,系统会再创建一个名为[dbName].1的文件,该文件大小是方才的两倍。以此类推,接下来创建的[db Name].n都是[dbName].n-1的两倍,最大直到2048M,此后,再次创建的文件大小都为2048M。因此如果数据足够多,64M, 128M, 256M, 1024M, 2048M, 2048M…大小的文件会被创建。下图为数据库中的数据文件。
MongoDB记录数及占用空间测试
以下是不同记录数的情况下数据占用空间大小,每个文档的大小为240B,本人亲测:
空间释放
MongoDB自己不会释放空间,需要根据实际情况考虑策略。
我们删除MongoDB中的数据后,MongoDB不会释放空间,在此基础上再次插入数据后,数据将占用删除后的空间,即不再需要重新开辟空间。
我们可以采用repair或compact命令主动回收,compact命令是对于某个collection(表),而repair是针对一个数据库。repaire命令执行时会停止数据库读写操作。(目前使用repair命令可实现空间释放,但是compact命令执行之后没有效果,需要再研究)。
WiredTiger
文档级锁(Document Level Locking)
WiredTiger增加了文档级锁的概念,想比于MMAP的集合级锁,文档级锁可以让多个客户端同时修改同一个集合中的不同数据。
压缩(Compression)
使用WiredTiger引擎,MongoDB可以压缩所有的集合和索引,相对于MMAPv1,MongoDB可以压缩最大80%的空间。
下图可以看出WiredTiger在存储方面的优势:
注:以上数据为本人测试结果,不同的文档会有不同的结果,大家可以自己试下。
http://blog.csdn.net/liwanqing1990/article/details/45980223
- MongoDB存储引擎
- mongodb存储引擎
- MongoDB 数据存储引擎
- MongoDB存储引擎
- MongoDB存储引擎选择
- MongoDB 之存储引擎
- Mongodb mmapv1存储引擎解析
- mongodb注意点-存储引擎
- Mongodb mmapv1存储引擎解析
- Mongodb WireTiger 新式牛逼存储引擎
- Mongodb Wiredtiger存储引擎实现原理
- Mongodb Wiredtiger存储引擎实现原理
- MongoDB Wiredtiger存储引擎实现原理
- Mongodb 3.2新的存储引擎
- MongoDB 存储引擎:WiredTiger和In-Memory
- MongoDB 存储引擎Wiredtiger原理剖析
- MongoDB WiredTiger 存储引擎(1) cache_pool设计
- MongoDB 存储引擎:WiredTiger和In-Memory
- Redis Desktop Manager远程连接Redis
- 详述 MySQL 中的行级锁、表级锁和页级锁
- sha256
- Tkinter教程3——一个例子(真实的)程序
- 汉明距离计算
- MongoDB存储引擎
- 反射
- Spring Redis(1)介绍及连接
- Classic bluetooth chat 二
- 2016年第七届蓝桥杯C/C++程序设计本科B组省赛-快速排序
- resnet 25 训练人脸识别
- ubuntu免密ssh登录
- GIT tips
- RobotFramework环境配置十九:数据驱动(Read Column From Excel)