如何检查当前mongodb是否启用了mongodb wiredtigerr存储引擎

1026人阅读
mongodb(3)
在以前,MongoDB只有一个存储引擎,叫做MMAP,MongoDB3.0的推出使得MongoDB有了两个引擎:MMAPv1和WiredTiger。
MMAPv1:适应于所有MongoDB版本,MongoDB3.0的默认引擎
WiredTiger:仅支持64位MongoDB
MongoDB两种引擎可以互相切换,我们可以在创建服务的时候指定引擎类型。语句如下:
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在存储方面的优势:
每个文档大小
数据占用空间
WiredTiger
注:以上数据为本人测试结果,不同的文档会有不同的结果,大家可以自己试下。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:6677次
排名:千里之外
(1)(1)(4)(1)MongoDB多存储引擎支持机制 | MongoDB中文社区如何检查当前mongodb是否启用了WiredTiger存储引擎_百度知道
如何检查当前mongodb是否启用了WiredTiger存储引擎
我有更好的答案
至少通2种 验证: 1、Linux/OSX执行哗法糕盒蕹谷革贪宫楷命令 WIREDTIGER_CONFIGURED=`ps -ef|grep mongod|grep -i storageengine|grep -ic wiredtiger`echo ${WIREDTIGER_CONFIGURED} 返1则说明前系统运行着WiredTiger存储引擎mongod 2、Linux/OSX执行命令 echo &db...
其他类似问题
为您推荐:
mongodb的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁在开源中国和平常中遇到很多人在MongoDB3.2版本之后发现MongoVE连上MongoDB 却不能通过它查看数据的问题。写了这一篇文章解释一下为什么会出现这种情况已经解决方案!
Mongodb 3.0支持用户自定义存储引擎,用户可配置使用或者wiredTiger存储引擎。3.2版本以后默认的开启的是wiredTiger存储引擎,之前用的是mmapv1存储引擎。并且2个存储引擎生成的数据文件格式不兼容。也就是说mmapv1引擎生成的数据文件wiredTiger引擎读取不出来。
1:要想知道MongoDB到底开启了哪个引擎,最简单的方式查看数据文件。出现如下格式的数据文件是wiredTiger存储引擎启动了:
出现如下数据格式启动的是:mmapv1存储引擎
2:通过命令启动wiredTiger 存储引擎:
& mongod --storageEngine wiredTiger &--dbpath 数据目录
mongo 客户端连接效果:
mongoVE连接效果:
3:启动mmapv1 存储引擎
&mongod &--storageEngine mmapv1 --dbpath 数据目录:
mongo连接如下:
mongoVE连接如下图所示:
以上就是这些:如有错误请大家指正。
引用来自“寻梦2012”的评论eennn你是删除后,直接敲 mongod
--storageEngine mmapv1 --dbpath这个就行了
可能是刚出来不久吧
还是、。。。。所以才没有。
& 开源中国(OSChina.NET) |
开源中国社区(OSChina.net)是工信部
指定的官方社区

我要回帖

更多关于 mongodb wiredtiger锁 的文章

 

随机推荐