すべてのインデックスがRAMにキャッシュされているものを把握する方法はありますか?個々のインデックスのページ関連の統計(ヒット数とミス数)を知りたい
すべてのインデックスがRAMにキャッシュされているものを把握する方法はありますか?個々のインデックスのページ関連の統計(ヒット数とミス数)を知りたい
回答:
db.serverStatus()
コマンドから、全体的な(インスタンス全体の)ヒット情報、特に次の情報を取得できます。
http://docs.mongodb.org/manual/reference/command/serverStatus/#serverStatus.indexCounters.hits http://docs.mongodb.org/manual/reference/command/serverStatus/#serverStatus.indexCounters.misses
これらの数値はプロセスの存続期間中に見られる合計であるため、レートを取得したり、経時的な傾向を確認したりする場合は、それらを定期的に記録し、それに応じて値を比較する必要があります。ありがたいことに、MMSモニタリングをインストールすると、それが自動的に行われ、結果がグラフ化されます。
ただし、現在利用可能なインデックスごとの統計はありません。関連する機能リクエストは、追跡および投票の目的でここにあります。
https://jira.mongodb.org/browse/SERVER-2227
更新:2016年1月
上記の統計情報は、server statusコマンドの出力から削除されているため、利用できなくなりました。ただし、参照されている機能のリクエストはこれで完了し、バージョン3.2では$indexStats
集計演算子の形で利用できます(リンクされたドキュメントにもサンプル出力が含まれています)。完全を期すために、ここに私がまとめた例を示します。
クエリを実行する前に、デフォルト_id
との2つのインデックスしかありませんindexme
。両方ともopsが0です。
> db.foo.aggregate( [ { $indexStats: { } } ] ).pretty()
{
"name" : "indexme_1",
"key" : {
"indexme" : 1
},
"host" : "localhost:27017",
"accesses" : {
"ops" : NumberLong(0),
"since" : ISODate("2016-01-12T19:03:01.358Z")
}
}
{
"name" : "_id_",
"key" : {
"_id" : 1
},
"host" : "localhost:27017",
"accesses" : {
"ops" : NumberLong(0),
"since" : ISODate("2016-01-12T18:59:24.292Z")
}
}
次に、いくつかの検索を実行して操作をオンにしindexme
、もう一度確認します。
> db.timecheck.find({indexme: 33})
> db.timecheck.find({indexme: 55})
> db.timecheck.aggregate( [ { $indexStats: { } } ] ).pretty()
{
"name" : "indexme_1",
"key" : {
"indexme" : 1
},
"host" : "localhost:27017",
"accesses" : {
"ops" : NumberLong(2),
"since" : ISODate("2016-01-12T19:03:01.358Z")
}
}
{
"name" : "_id_",
"key" : {
"_id" : 1
},
"host" : "localhost:27017",
"accesses" : {
"ops" : NumberLong(0),
"since" : ISODate("2016-01-12T18:59:24.292Z")
}
}