NNavicat Monitor 3には、様々なエキサイティングな新機能が搭載されています。例えば、サーバーログから選択されたフィルターに基づいてクエリデータを収集するトレースを作成できるようになりました。トレースを作成する時には、SQLプロファイラーによって収集されたデータをフィルター処理する条件を定義し、トレースを実行するスケジュールを設定できます。今日のブログでは、トレースを作成してその結果を表示する方法を学びます。
トレースの詳細
トレース機能は、PostgreSQLでのみ使用できるSQLプロファイラーの一部です。SQLプロファイラーは、非効率的で遅いクエリを見つけるためのグラフィカルなクエリ実行の詳細を提供します。
トレースから収集されたデータは分析され、パフォーマンスの問題のトラブルシューティングに使用される場合があります。例えば、本番環境でパフォーマンスに影響を与えているクエリを確認できます。
トレースの作成
トレース追加アイコン または“+ 新しいトレース“をクリックすると、SQLプロファイラー、クエリアナライザ、長時間実行クエリのページで新しいトレースを作成できます。

“+ 新しいトレース“ボタンをクリックする前に、SQLプロファイラーページでインスタンスを選択する必要があります:

トレース追加アイコン または“+ 新しいトレース”ボタンをクリックすると、新しいトレースダイアログが表示されます。インスタンスから関連データを取得するためにNavicat Monitorを承認するよう求めるプロンプトが表示される場合があります。
新しいトレースダイアログに入力できる全ての詳細は次のとおりです:
- トレース名:トレースの名前
- ユーザーフィルター:クエリをトレースに含めるユーザー/ロール。空は、全てのユーザー/ロールからのクエリを含むことを意味します。
- データベースフィルター:トレースするデータベース。空は、全てのデータベースに対するクエリを含むことを意味します。
- クエリフィルター:トレースのクエリをフィルター処理するための検索文字列またはクエリID。
- 最大トレース行数:トレースの最大行数。SQLプロファイラーは、その行数に達するとトレースを終了します。
- スケジュール:トレースを実行するためのスケジューリングの詳細。
- 共有する相手:トレースを表示できるユーザー。
以下は、上記のフィールドのいくつかが入力された新しいトレースダイアログです:

“トレースの作成“をクリックすると、指定されたスケジュールに従ってトレースが開始されます。最初の期間が経過すると、結果が表示されます。
トレース結果の表示
トレースは、各クエリの実行計画とそのコンポーネントの統計をグラフィカルに表示します。以下は、Sakilaサンプルデータベースに対するクエリのトレースです:

上記のスクリーンキャプチャから、トレース結果が3つのセクションに分割されていることがわかります:
- クエリテーブル:クエリテーブルには、クエリの基本情報が表示されます。クエリを選択して、その詳細とプランを表示します。
- クエリの詳細: クエリの完全なステートメントを表示します。
- 実行計画:各クエリに対して生成された実行計画は、ビジュアル、チャート、テキストベースの3つの異なる形式で表示できます。
Navicat Monitor 3を使用したPostgreSQLインスタンスのクエリのトレースに関する最終的な考察
今日のブログでは、Navicat Monitor 3でトレースを作成し、その結果を表示することがいかに簡単であるかを説明しました。PostgreSQLでのみ利用可能なトレースは、サーバーログから、選択されたフィルターに基づいて、クエリデータを収集します。それが非効率的で遅いクエリを見つけるために不可欠であることがわかると思います。