2011-11-16 78 views
3

我在MongoDB中有一个包含2000万个文档和索引的集合。我已经确认find()查询使用索引(col_1_col_2)(使用解释确认)。但是,我注意到,一天中第一个find()查询需要5-10秒,但后续所有查询都少于100 ms。如何减少MongoDB中第一个查询的查询响应时间?

更新的DB统计: db..stats() ns。 计数20135438 大小5694.57米 avgObjSize 296.55146314672 storageSize7109.57米 numExtents 35个 nindexes 4 lastExtentSize1188.86米 paddingFactor 1个 标记1个 totalIndexSize3044.69米 indexSizes { “ID”:653319632, “col_1_col_2” :691730480, “col2_1”:848832320, “col1_1”:998706576 } OK 1 {顶部:1} 总共18 读锁16

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

+0

需要查看您的文档大纲以及索引的外观。 – Petrogad

回答

0

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

如果你使用linux:iostat -m 1会帮助你。

+0

* iostat不是iostats。需要通过apt-get install来安装sysstat –

+0

在CentOS或RHEL机器上试试。 ;) –