profile (データベースプロファイラ)
最終更新:2026-10-09
profile (データベースプロファイラ)
profile はデータベースプロファイラを切り替えます。レベル 0 はオフ、1 は遅い操作のみ記録(slowms 超)、2 はすべて記録します。記録された操作は system.profile に入り、ボトルネックの特定に役立ちます。mongosh には db.setProfilingLevel(1, { slowms: 200 }) などのヘルパーがあります。
| カテゴリ | 監視と診断 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
db.runCommand({ profile: <level>, slowms: <ms> })
db.setProfilingLevel(1, { slowms: 200 })
db.getProfilingStatus()
⚙️ パラメータ
| profile | レベル: 0=オフ、1=遅い操作のみ、2=すべて |
|---|---|
| slowms | スロークエリのしきい値(ミリ秒)。レベル 1 で使用します。 |
戻り値:以前のレベル(was)、現在の slowms、および ok を返します
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// profile: 低速操作ログを有効化
use shop
db.runCommand({ profile: 1, slowms: 200 })
db.system.profile.find({ millis: { $gte: 200 } }).sort({ ts: -1 }).limit(5)
出力:
{ was: 0, slowms: 100, sampleRate: 1, ok: 1 }
// このクエリは 200ms 以上かかった直近 5 件の操作を返す
📌 注意事項
- レベル 1 は slowms 超の操作のみ記録、レベル 2 はすべて記録
- プロファイラ出力は system.profile に入る。定期的に掃除する
- 本番ではオーバーヘッドを抑えるためレベル 1 と適切な slowms を推奨
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Qプロファイラのレベル 1 と 2 の違いは?
Aレベル 1 は slowms より遅い操作のみ、レベル 2 はすべての操作を記録します。
Qプロファイラのログはどこに保存されますか?
Asystem.profile コレクションに保存され、直接クエリできます。
Qプロファイラをオフにするには?
Adb.setProfilingLevel(0) または db.runCommand({ profile: 0 }) を実行します。