Mongodb Mongo`touch`命令出现意外结果

Mongodb Mongo`touch`命令出现意外结果,mongodb,Mongodb,使用11GB工作集(db.records.totalSize()),我运行了touch命令,以便让Mongo在我的16GB RAM盒上使用尽可能多的内存。在运行touch之前,serverStatus命令显示Mongo的mem.resident等于5800(大约6GB RAM) 但是,在运行touch之后,Mongo使用的内存量大致相同 "mem" : { "bits" : 64, "resident" : 5821, /* only a

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

但是,在运行touch之后,Mongo使用的内存量大致相同

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

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

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

这意味着,当您的集合和索引被读入RAM时,它们不会显示在“res”值中,直到您开始实际查询它


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

MongoDB.serverStatus()命令报告驻留内存的方式是通过计算mongod进程实际访问了物理RAM中的多少页

这意味着,当您的集合和索引被读入RAM时,它们不会显示在“res”值中,直到您开始实际查询它

您可以通过查看mongod进程有多少RAM(而不是虚拟内存)来验证数据是否被读入了RAM(如果之前确实很冷的话)

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