DBAtlas · データベース運用アトラス

実際の実行統計で実行計画を調べる (explain executionStats)

MongoDBパフォーマンス

コマンド

db.musteri.find({ sehir: "Ankara", durum: "aktif" }).sort({ kayitTarihi: -1 }).explain("executionStats")
// Summary: winning plan, returned documents, examined keys/documents and time
const e = db.musteri.find({ sehir: "Ankara", durum: "aktif" }).sort({ kayitTarihi: -1 }).explain("executionStats");
({ plan: e.queryPlanner.winningPlan, n: e.executionStats.nReturned, keys: e.executionStats.totalKeysExamined, docs: e.executionStats.totalDocsExamined, ms: e.executionStats.executionTimeMillis })
// For an aggregation:
db.musteri.explain("executionStats").aggregate([{ $match: { sehir: "Ankara" } }, { $group: { _id: "$durum", n: { $sum: 1 } } }])

概要

クエリを実行し、採用されたプラン (IXSCAN/COLLSCAN、SORT ステージ)、返されたドキュメント数、調べたインデックスキー数とドキュメント数、所要時間を表示する。

使用する場面

プロファイラーやログで遅く見えるクエリを分析する場合、および新しいインデックスが実際に使われていることを確認する場合。

注意

executionStats はクエリを実際に実行するため、ピーク時に重いクエリを explain すると負荷も増える。書き込みコマンド (update/delete/findAndModify) では、explain はデータを変更しないがプランは実行する。totalDocsExamined/nReturned の比率が高い場合や、プランにメモリ内 SORT ステージがある場合は、インデックスが適切でないことを意味する。

DBAtlas で開く →

関連項目