在以下事情中需要您的幫助:MongoDB。爲什麼索引請求執行得如此緩慢?
我有一個MongoDB集合,其中包含超過26百萬個文檔。 文檔的結構是不變的(pastebin.com/iBzW0Fkz)
收集包括對 「用戶」 的索引字段
db.conversations.getIndexes();
RESULT - pastebin.com/xHecpw00
用於現場的所有請求「用戶」進行很慢(超過100毫秒)
db.getCollection('conversations').find({users: {$all: ["5942328", "9082468"]}});
EXPLAIN - pastebin.com/0C11Cr9F
db.getCollection('conversations').find({users: "9163099"});
EXPLAIN - pastebin.com/CmvuDf10
的問題清單:
- 爲什麼通過索引請求,所以慢慢地執行?
- 如何在重新啓動mongodb服務器或進程後預熱索引? Touch()指令在WiredTiger引擎中不再可用。
這是一個額外的信息
db.stats();
結果 - pastebin.com/9JZF8ChQ
db.getCollection('conversations').stats();
結果 - pastebin.com/17yV4Fsi
db.conversations.getIndexes();
結果 - 引擎收錄.com/xHecpw00
信息有關服務器:
lscpu - pastebin.com/k7wUE4gH
lshw -short - pastebin.com/w5XYuY3U
有從HDD讀取操作的假設是一個瓶頸和SSD可能會解決這個問題,但是沒有機會去測試它。
在此先感謝。