2011-11-16 76 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機器上試試。 ;) –