2013-12-23 38 views
0

我們可以使用如何測量mongodb索引時間?

db.phones.find({場: '值'})。說明()

得到查詢 '米利斯'。

,但如果我想知道時間(成本),以指數

db.phones.ensureIndex什麼。({面積:1})解釋()

我可以使用mongoshell或其他更好的方法來衡量制作索引的時間嗎?

+0

我真的不確定爲什麼你會想知道這個,除非你計劃動態創建索引這是一個非常糟糕的主意,但是,你可以使用currentOP()來查看索引器是否仍在運行。 – Sammaye

+0

這只是爲了我的好奇心:) – vansdog

+0

我不認爲它會進入配置文件集合,我認爲只有物理查詢會這樣我認爲唯一的方法atm是通過分析當前的op – Sammaye

回答

0

構建索引的成本受許多變量的影響,包括索引的複雜性,要​​索引的文檔數量以及您當前正在執行的MongoDB服務器的其他操作。

沒有一個explain()相當於估計成本,但是你絕對可以得到的經過時間來建立初始索引感:

  • mongo外殼具有verbose模式,它會顯示你操作需要多長時間。啓用該選項,然後建立索引的前景:

    > set verbose true 
    > db.tweets.ensureIndex({'lang':1,'protected':1}) 
    Inserted 1 record(s) in 262ms 
    
  • grep的你mongod日誌中建(前景或背景)和相關的時機「建立索引」看指標:

    > grep "build index" /path/to/mongodb.log 
    
    Wed Jan 1 12:45:05.102 [conn3] build index twitter.tweets { lang: 1.0, protected: 1.0 } 
    Wed Jan 1 12:45:05.363 [conn3] build index done. scanned 51428 total records. 0.26 secs 
    
+0

專業提示:如果您喜歡「verbose」shell模式,您可以通過在您的['〜/ .mongorc.js'文件]中添加「_verboseShell = true;」來啓用它(http://docs.mongodb.org /手動/參考/程序/蒙戈/#蒙戈-mongorc文件)。 – Stennie

+0

謝謝!這是一個很酷且直接的方式! – vansdog