2017-03-13 42 views
0

查詢含有300萬個物品的收集(收集大小爲15GB)。提高大量收集查詢的速度

//indexing 
{name : 1} 

//query 
db.getCollection('contacts').find({name :"kello"}).limit(500) 

該機具有2Cores8GB存儲器,並且它需要大約30秒完成該查詢。保持你的客戶等待大約半分鐘是不可能的。

我能做些什麼來加速它?

它是否有一臺包含16GB/32GB內存的計算機,並將mongodb配置爲將整個集合緩存到內存中,以便它可以完成內存中的所有查詢?

或者,我應該有幾個8GB的機器有一個分片羣集?

這些方法會提高查詢速度嗎?

+0

這看起來很奇怪,對於這樣的查詢。您使用的是哪個版本的Mongodb?用哪個引擎?你也可以發佈這個查詢的解釋嗎? – felix

+0

3.0現在。 MMAP。這只是一個搜索索引鍵的例子(即這裏的'name')。 – ppn029012

+1

您應該先升級您的mongoDB版本(當前是3.4)並切換到WiredTiger以充分利用數據壓縮。然後確保網絡速度不是瓶頸。如果問題仍然存在,則需要查看[解釋](https://docs.mongodb.com/manual/reference/method/cursor.explain/)。在考慮分片/升級硬件之前,請確保您知道問題來自哪裏 – felix

回答