MongoDB。なぜインデックスによるリクエストが非常に遅いのですか?
私は2600万件以上のドキュメントを含むMongoDBコレクションを持っています。 文書の構造が一定である(pastebin.com/iBzW0Fkz)は
コレクションは、 "ユーザー" フィールド
db.conversations.getIndexes();
結果にインデックス含まれています - pastebin.com/xHecpw00
フィールドのすべての要求を "ユーザが」実行される非常に遅い(100ms以上)
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();
RESULT - pastebin.com/17yV4Fsi
db.conversations.getIndexes();
RESULT - ペーストビン.com/xHecpw00
サーバーに関する情報:
lscpuから -short pastebin.com/k7wUE4gH
lshw - pastebin.com/w5XYuY3U
HDDからの読み出し動作の前提がありますですボトルネックとSSDがこの問題を解決するかもしれませんが、テストする機会はありません。
ありがとうございます。