SQLプロファイラー¶
非効率的なSQLコードは、データベースパフォーマンスの問題の主な原因ではないにしても、その1つです。データベース管理者および開発者にとっての課題は、大規模で複雑なシステムでこのコードを見つけて最適化することです。
SQLProfiler は、実行が不十分なSQLコードを見つけて最適化するのに役立ちます。
SQLProfilerの特定の機能と利点は次のとおりです。
On-Demand Traces. パラメータを手動で設定してトレースを開始することにより、いつでもSQLトレースをキャプチャできます。
Scheduled Traces. 不便な場合は、トレースパラメータを指定して、後で実行するようにスケジュールすることもできます。
Save Traces. トレースを実行し、後で確認できるように保存します。
Trace Filters. データベースおよびユーザーごとにSQLキャプチャを選択的にフィルタリングするか、すべてのデータベースに対してすべてのユーザーから送信されたすべてのSQLステートメントをキャプチャします。
Trace Output Analyzer. グラフィカルテーブルを使用すると、クエリを期間またはステートメントですばやく並べ替えてフィルタリングできます。グラフィカルまたはテキストベースの
EXPLAINプランでは、クエリパスと結合がレイアウトされます。Index Advisor Integration. 遅いクエリを見つけて最適化したら、パフォーマンスをさらに向上させるために、インデックスアドバイザーに基礎となるテーブルインデックスの作成を推奨させることもできます。
次に、インストールプロセスについて説明します。
Step 1: SQLプロファイラーのインストール
SQLプロファイラーは、WindowsのAdvancedServerインストーラーまたはLinuxの edb-asxx-server-sqlprofiler RPMパッケージからインストールされます。 xx はAdvancedServerのバージョン番号です。
Step 2: SQLプロファイラライブラリを追加する
インスタンスの postgresql.conf パラメータファイルを変更して、 `` shared_preload_libraries`` 構成パラメータにSQLプロファイラライブラリを含めます。
Linuxインストールの場合、パラメーター値には以下を含める必要があります。
$libdir/sql-profiler
Windowsでは、パラメータ値には次のものが含まれている必要があります。
$libdir\sql-profiler.dll
Step 3: SQLプロファイラが使用する関数を作成します
SQLProfilerインストールプログラムは、SQLスクリプト( sql-profiler.sql という名前)を次の場所に配置します。
Linuxの場合:
/usr/edb/as13/share/contrib/
Windowsの場合:
C:\Program Files\edb\as13\share\contrib\
psql コマンドラインインターフェイスを使用して、プロファイルするサーバーのメンテナンスデータベースとして指定されたデータベースで sql-profiler.sql スクリプトを実行します。AdvancedServerを使用している場合、デフォルトのメンテナンスデータベースの名前は edb です。PostgreSQLインスタンスを使用している場合、デフォルトのメンテナンスデータベースの名前は postgres です。
次のコマンドは、Linuxシステムで psql コマンドラインを使用して sql-profiler.sql スクリプトを呼び出します。
$ /usr/edb/as13/bin/psql -U user_name database_name <
/usr/edb/as13/share/contrib/sql-profiler.sql
Step 4: サーバーを停止して再起動すると、変更が有効になります。
SQLプロファイラーを構成すると、サーバー上にあるすべてのデータベースで使用できるようになります。EDBPostgresEnterpriseManagerでSQLプロファイラー機能を利用できます。PostgresEnterpriseManagerの詳細については、EDBWebサイトにアクセスしてください。
Troubleshooting
(SQLプロファイラーの新しいバージョンへのアップグレードを実行した後に)次のテキストを含むエラーが発生した場合:
An error has occurred:
ERROR: function return row and query-specified return row do not match.
DETAIL: Returned row contains 11 attributes, but the query expects 10.
このエラーを修正するには、既存のクエリセットを新しいクエリセットに置き換える必要があります。まず、 uninstall-sql-profiler.sql スクリプトを呼び出してSQLプロファイラーをアンインストールし、次に sql-profiler.sql スクリプトを呼び出してSQLプロファイラーを再インストールします。