Mongodb 了解“的服务器状态”;mem";
查看Mongodb 了解“的服务器状态”;mem";,mongodb,memory-mapped-files,Mongodb,Memory Mapped Files,查看serverStatus命令,我看到以下数据 >db.runCommand( { serverStatus: 1} ) ... "mem" : { "bits" : 64, "resident" : 2138, // Mongo uses 2 GB RAM "virtual" : 33272, "supported" : true,
serverStatus
命令,我看到以下数据
>db.runCommand( { serverStatus: 1} )
...
"mem" : {
"bits" : 64,
"resident" : 2138, // Mongo uses 2 GB RAM
"virtual" : 33272,
"supported" : true,
"mapped" : 16489, // equals db.coll.totalSize()
"mappedWithJournal" : 32978
},
Mongo建议
如果我理解正确,那么16.4GB的Mongo文档/索引是内存映射的。由于Mongo只使用2GB的RAM,因此每当Mongo需要访问2GB之外的地址时,Mongo都需要在磁盘上获取地址的内容,然后将其加载到内存中
这是我的解释吗?工作集必须适合RAM的主要原因吗?不必这样做,但如果您希望不进行磁盘读取、页面抖动和交换,那么您需要确保我如何知道是否需要磁盘读取?对于本例,我需要读取与我的查询匹配的所有文档的
\u id
(仅使用索引)。我不能使用覆盖索引,因为索引中的一个字段是子文档。