ITPub博客

首页 > 数据库 > > MongoDB 初体验:存储引擎 MMAPv1 与高内存消耗及升级迁移

MongoDB 初体验:存储引擎 MMAPv1 与高内存消耗及升级迁移

作者:浪花小雨滴 时间:2020-05-22 11:03:25 0 删除 编辑

想不到我和MongoDB的第一次亲密接触竟然是这样开始的。





当我对公司的一个内部系统性能无可忍受时,意外发现在这个内存仅为 32G 的服务器上,运行着一个 MongoDB 数据库,其主进程 mongod 占用了 30.705 G的虚拟内存空间。这立刻引起了我的兴趣,必须要研究一下其工作原理。





这个数据库的版本是 3.0 :


[root@enmotech bin]# ./mongod --version
db version v3.0.12


那么,为什么 MongoDB 会消耗这么多内存呢?


通过数据库的状态查询,可以看到同样内存分配情况,Resident的固有内存分配了254M,Virtual的虚拟内存分配了 31,441M:


> db.serverStatus().mem;
{
"bits" : 64,
"resident" : 254,
"virtual" : 31441,
"supported" : true,
"mapped" : 15498,
"mappedWithJournal" : 30996
}


再看一下存储引擎,当前数据库使用的存储引擎是 mmapv1 :


> db.serverStatus().storageEngine;
{ "name" : "mmapv1" }


MMAPv1 实际上就是 MongoDB 在 3.0 以前原有的存储引擎,在 3.0 版本它也继续作为 MongoDB 的默认存储引擎,而在 MongoDB 3.2 版本默认存储引擎已经改为 WiredTiger。


>>>阅读全文

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3163714/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    39968