Mongo`touch`命令意外结果

时间:2013-10-18 17:48:45

标签: mongodb

使用 11 GB 工作集(db.records.totalSize()),我运行了touch命令,以便让Mongo在我的16 GB上尽可能多地使用内存RAM盒子。在运行触摸之前,serverStatus命令显示Mongo的mem.resident等于 5800 (大约6 GB RAM)。

db.runCommand({ touch: "records", data: true, index: true })
    { "ok" : 1 }

但是,在运行触摸后,Mongo使用了大致相同数量的RAM。

    "mem" : {
            "bits" : 64,
            "resident" : 5821, /* only a 21 MB increase */
            "virtual" : 29010,
            "supported" : true,
            "mapped" : 14362,
            "mappedWithJournal" : 28724
    },

为什么touch命令几乎没有增加Mongo使用的内存量(mem.resident)?

1 个答案:

答案 0 :(得分:1)

MongoDB db.serverStatus()命令报告驻留内存的方式是计算mongod进程实际访问的物理RAM中的页数。

这意味着,当您的收藏和索引被读入RAM时,他们将无法显示在" res"值,直到你开始实际查询它。

您可以通过查看mongod进程有多少RAM(而不是虚拟内存)来验证数据是否已读入RAM(如果以前肯定是冷的话)。