Performance 如何减少MongoDB中第一个查询的查询响应时间?

Performance 如何减少MongoDB中第一个查询的查询响应时间?,performance,mongodb,indexing,Performance,Mongodb,Indexing,我在MongoDB中有一个集合,包含2000万个文档和为该集合创建的索引。我已经确认find()查询使用了索引(col_1\u col_2)(使用explain确认)。但是,我注意到,一天中的第一个find()查询需要5-10秒,但是所有后续查询都需要不到100毫秒的时间 更新的数据库统计数据: db..stats() 纳什。 计数20135438 尺寸5694.57米 avgObjSize 296.55146314672 存储容量7109.57m numExtents 35 9指数4 最后延伸

我在MongoDB中有一个集合,包含2000万个文档和为该集合创建的索引。我已经确认find()查询使用了索引(col_1\u col_2)(使用explain确认)。但是,我注意到,一天中的第一个find()查询需要5-10秒,但是所有后续查询都需要不到100毫秒的时间

更新的数据库统计数据: db..stats() 纳什。 计数20135438 尺寸5694.57米 avgObjSize 296.55146314672 存储容量7109.57m numExtents 35 9指数4 最后延伸尺寸1188.86m 填充因子1 旗帜1 totalIndexSize 3044.69m 指数化{ “id”:653319632, “col_1_col_2”:691730480, “col2_1”:848832320, “col1_1”:998706576 } 好的1 {顶部:1} 总数18 读锁16

问题: 1为什么第一次查询需要更长的时间?
2这与在RAM中加载索引有关吗?

在第一次请求期间检查磁盘活动。这可能与将数据从磁盘装载到RAM有关


如果您使用linux:iostat-m1将对您有所帮助。

需要查看您的文档大纲和索引的外观。*iostat而不是iostats。需要通过CentOS或RHEL机器上的apt get install sysstatTry安装。;)