PEM 8.1 -PEM SQL Profiler Guide

EnterpriseDB

SQL Profiler

Postgres Enterprise Manager(PEM)は、 PostgreSQLおよびAdvanced Serverデータベースサーバーを管理、監視、およびチューニングモニタリング際に、データベース管理者、システム設計者、およびパフォーマンスアナリストを支援するように設計されています。 PEMは、単一のコンソールから単一サーバーまたはマルチプルサーバーを管理およびモニタするように設計されており、監視対象データベースを完全に制御できます。

SQLプロファイラープラグインはPEMと連携して、サーバーのワークロードをプロファイリングできます。 SQL Profilerプラグインは、PEMエージェントの有無にかかわらずサーバーにインストールできますが、トレースは非管理対象サーバーでアドホックモードでのみ実行でき、管理対象サーバーでのみスケジュールできます。

このドキュメント>プロファイラのインストールと使用をごガイドするためのステップバイステップの手順を説明します。

SQLプロファイラは、 PostgreSQLのEDBディストリビューションとAdvanced Serverがサポートするバージョンでのみ公式にサポートされています。プラグインは、StackBuilderを介して、またはEDBのyumリポジトリ内のオペレーティングシステム依存パッケージソフトとして配布されます。プラグインは、 Advanced Serverのインストールとともに配布およびインストールされます。

このガイド全体で、Postgresという用語は、 PostgreSQLまたはAdvanced Serverインストールのいずれかを指します(どちらか適切な場合)。

installation_the_sql_profiler_plugin using_sql_profiler uninstalling_sql_profilerの結論

</ div>

Installing the SQL Profiler Plugin

SQLプロファイラーを使用する各サーバーにプラグインをインストールする必要があります。あなたは、PostgreSQL 9.6とPostgreSQLの10を実行しているホストを持っている場合例、あなたはプラグインの2つのバージョン、各サーバーごとに1つをインストールする必要があります。

Configurationセクションに進む前に、以下にリストされているインストール手順に従って、 PostgreSQL用のプラグインをインストールします。 Advanced Serverを使用している場合、インストールをスキップしてConfigurationセクションに進むことができます。

グラフィカルインストーラを使用して、 Windowsプラットフォームに任意のバージョンのSQLプロファイラをインストールできます。 Linuxでは、RPMパッケージを使用してSQLプロファイラーをインストールします。ホストプラットフォーム用のEDBリポジトリの設定の詳細については、PEM Linux Installation Guideを参照してください。

WindowsでのSQLプロファイラーのインストール

SQL Profilerグラフィカルインストーラを起動するには、Administrator特権を想定し、インストーラを含むディレクトリに移動して、インストーラアイコンをダブルクリックします。 SQL Profilerインストーラは、セットアップウィザードにようこそ。

The SQL Profiler Installer Welcome dialog

Nextをクリックして、License Agreementに進みます。

The SQL Profiler License Agreement

適切なラジオボタンをハイライトて契約に同意する前に、ライセンス契約を注意深く確認してください。 Nextをクリックして、Installation Directoryダイアログに進みます。

The PostgreSQL Installation Directory

インストレーションディレクトリの代替の場所を指定するか、デフォルトの場所を受け入れて[Next]をクリックして続行します。

Ready to Install

これで、ウィザードでSQL Profilerプラグインをインストールする準備ができました。 Nextをクリックして続行します。

Installing the SQL Profiler plugin

SQL Profilerプラグインインストーラは、システムにファイルをコピーするときに進行状況バーを表示します。

The SQL Profiler installation is complete

インストールが完了すると、 SQL Profilerプラグインを構成する準備が整います。

RPMパッケージを使用してSQLプロファイラーをインストールする

Note * SQL Profilerをインストールする前に、 PostgreSQLデータベースサーバーにsslutilsパッケージを追加する必要がある場合があります。

システムでEDBリポジトリをすでに構成している場合は、yumまたはdnfを使用してSQLプロファイラーをインストールできます。

yum install postgresql<X>-sqlprofiler

or

dnf install postgresql<X>-sqlprofiler

ここで、<X>はPostgresインストールのバージョンです。

EDBリポジトリの構成に関する詳細については、PEM Linux Installation Guideを参照してください。

Debian / UbuntuにSQLプロファイラーをインストールする

Note * SQL Profilerをインストールする前に、sslutilsパッケージをPostgreSQLデータベースサーバーに追加する必要がある場合があります。

aptコマンドを使用して、Debian 9.xまたはUbuntu 18でDEBを使用してSQLプロファイラーをインストールできます。ルート権限を引き受け、次を入力します。

apt install postgresql-<X>-sqlprofiler

ここで、<X>はPostgresインストールのバージョンです。

インストールが完了すると、 SQL Profilerプラグインを構成する準備が整います。

SQLプロファイラーの設定

SQLプロファイラープラグインは、インストールプロセスが完了しても自動的に有効になりません。これにより、都合の良いときにサーバーをリスタートでき、継続的に必要とされないシステムでプラグインが不必要にロードされるのを防ぎます。

プラグインを有効にするには、次の手順を使用します。

1.プロファイルするサーバー上のpostgresql.confファイルを編集し、以下に示すようにshared_preload_librariesパラメータを変更します。

shared_preload_libraries = '$libdir/sql-profiler'
  1. Postgresサーバーを再起動します。

  2. Query Toolまたはpsqlコマンドラインインタフェースを使用して、プロファイリングするサーバーでMaintenance Databaseとして指定されたデータベースでsql-profiler.sqlスクリプトを実行します。使用している場合:

      • PostgreSQLは、デフォルトのメンテナンス>はpostgresです。 -Advanced Advanced Server、デフォルトのメンテナンスデータベースはedbです。
    • PEMクエリツールを使用してスクリプトを実行するには、Browserツリーコントロールでメンテナンスデータベースの名前を強調表示し、ToolsメニューでQuery toolを選択します。クエリツールが開いたら、FilesメニューのOpenオプションを使用してWebブラウザーを開き、sql-profiler.sqlスクリプトに移動します。デフォルトでは、sql-profiler.sqlスクリプトは、 Postgresインストールの下のcontribフォルダーにあります。

    • クエリツールのSQL Editorパネルでスクリプトが開いたら、 SQLエディターでスクリプトのコンテンツを強調表示し、QueryメニューからExecuteオプションを選択(またはExecuteアイコンをクリック)してスクリプトを呼び出し、 SQLプロファイラーを構成します。

psqlコマンドラインを使用して、構成スクリプトを呼び出すこともできます。次のコマンドは、 psqlを使用して、Linuxシステム上のAdvanced Serverデータベースでsql-profiler.sqlスクリプトを呼び出します。

$ /usr/edb/as<x>/bin/psql -U postgres postgres < /usr/edb/as<x>/share/contrib/sql-profiler.sql
  • ここで、&lt; x>はAdvanced Serverのバージョンです。

SQLプロファイラーを構成すると、サーバー上にあるすべてのデータベースで使用できるようになります。

Creating a new trace

SQLプロファイラ機能にアクセスするには、PEM Browserツリーコントロールで監視対象のサーバー/データベースの名前を強調表示します。 Toolsメニューで、ServerオプションからSQL Profilerプルアサイドメニューに移動します。メニューオプションを使用すると、 SQLトレースを管理できます。

  • -Create trace…を選択して、新しいトレースを定義します。 -Open trace…を選択して、既存のトレースを開きます。 -Delete trace(s)…を選択して、1つ以上のトレースを削除します。 -View scheduled trace(s)…を選択して、スケジュールされたトレースのリストを確認します。
Server -> SQL Profiler menu

SQL Profiling and Analysis

ほとんどのRDBMS専門家は、非効率的なSQLコードがほとんどのデータベースパフォーマンスの問題の主な原因であることに同意しています。 DBAと開発者にとっての課題は、ラージで複雑なシステムで実行が不十分なSQLコードを見つけ、そのコードを最適化てパフォーマンスを向上させることです。

SQLプロファイラコンポーネントを使用すると、データベーススーパーユーザは、パフォーマンスの低いSQLコードを見つけて最適化できます。 Microsoft SQL ServerのProfilerのユーザーは、PEMのSQL Profilerのオペレーションと機能が非常に似ていることに気付くでしょう。 SQLプロファイラーは、各Advanced Serverインスタンスと共にインストールされます。 PostgreSQLを使用している場合は、 SQLプロファイラーインストーラをダウンロード、プロファイリングする各管理対象データベースインスタンスにSQLプロファイラー製品をインストールする必要があります。

SQL Profilerによって監視される各データベースについて、次のことを行う必要があります。

  1. postgresql.confファイルを編集します。 shared_preload_libraries設定パラメータにSQLプロファイラーライブラリを含める必要があります。

    • Linuxインストールの場合、パラメータ値には以下を含める必要があります。

    • $libdir/sql-profiler

Windowsでは、パラメータ値には次のものが含まれている必要があります。

  • $libdir/sql-profiler.dll

2.データベースでSQLプロファイラーが使用する関数を作成します。 SQLプロファイラーのインストールプログラムは、LinuxシステムのメインPostgreSQLインストレーションディレクトリディレクトリのshare/postgresql/contribサブディレクトリにSQLスクリプト(sql-profiler.sql名前付け)を配置します。 Windowsシステムでは、このスクリプトはshareサブディレクトリます。サーバーをPEMに登録するときに指定したメンテナンスデータベースでこのスクリプトを呼び出す必要があります。

3.サーバーを停止して再起動し、変更を有効にします。

ノート: SQLプロファイラーを構成する前にPEMクライアントでPEMサーバーに接続している場合は、サーバーとの接続を切断して再接続し、 SQLプロファイラー機能を有効にする必要があります。 SQL Profilerプラグインのインストールと構成の詳細については、PEM Installation Guidesを参照してください。

新しいSQLトレースの作成

SQLプロファイラーは、特定のSQLワークロードをキャプチャして表示し、 SQLトレースで分析します。キャプチャしたSQLトレースをすぐにスタートしてレビューすることも、キャプチャしたトレースを保存して後でレビューすることもできます。 SQLプロファイラーを使用して、最大15個の名前付けトレースを作成および保存できます。メニューオプションを使用して、トレースを作成および管理します。

トレースを作成する

Create trace...ダイアログを使用して、 SQLプロファイラーがインストールおよび構成されているデータベースのSQLトレースを定義できます。インストールおよび構成済み。ダイアログにアクセスするには、PEMクライアントツリーコントロールでデータベースの名前を強調表示します。 [管理]メニューから[ SQLプロファイラー]プルアッドメニューに移動し、[トレースの作成…]を選択します。

The Trace options tab

Trace optionsタブのフィールドを使用して、新しいトレースに関する詳細を指定します。

  • [名前]フィールドに、トレースの名前ます。
  • [User filter]フィールドをクリックして、クエリがトレースに含まれるロールを指定します。必要に応じて、[すべて選択]の横のボックスをオンにして、すべてのロールからのクエリを含めます。
  • [Database filter]フィールドをクリックして、トレースするデータベースを指定します。必要に応じて、[すべて選択]の横のボックスをオンにして、すべてのデータベースに対するクエリを含めます。
  • trace size in the Maximum Trace File Sizeフィールドを指定します。 SQLプロファイラーは、指定されたサイズにほぼ達するとトレースを終了します。
  • [作成]ボタンを選択したときにトレースをスタートするには、Run NowフィールドにYesを指定します。 [いいえ]を選択して、[スケジュール]タブのフィールドを有効にします。
The Create trace Schedule tab

Scheduleタブのフィールドを使用して、新しいトレースのスケジューリングの詳細を指定します。

  • Start timeフィールドを使用して、トレースの開始時間を指定します。
  • End timeフィールドを使用して、トレースの終了時間を指定します。
  • Repeat?フィールドにYesを指定して、毎日指定された時間にトレースを繰り返すことを示します。 [定期ジョブオプション]タブのフィールドを有効にするには、[いいえ]を選択します。
The Create trace Periodic job options tab

Periodic job optionsタブのフィールドは、繰り返しトレースに関するスケジュールの詳細を指定します。 Daysセクションのフィールドを使用して、ジョブを実行日を指定します。

  • Week daysフィールドをクリックして、トレースを実行曜日を選択します。
  • Month daysフィールドをクリックして、トレースを実行月の日を選択します。
  • Monthsフィールドをクリックして、トレースを実行月を選択します。

Timesセクションのフィールドを使用して、トレース実行のタイムスケジュールを指定します。

  • Hoursフィールドをクリックして、トレースを実行時間を選択します。
  • Minutesフィールドをクリックして、トレースを実行時間を選択します。

Create trace...ダイアログを完了したら、Createをクリックして、新しく定義されたトレースをスタートするか、後でトレースをスケジュールします。

The SQL Profiler tab, displaying the trace results

トレースをすぐに実行ことを選択すると、トレース結果がPEMクライアントに表示されます。

既存のトレースを開く

前のトレースをビューするには、PEMクライアントツリーコントロール内のプロファイルデータベースの名前を強調表示します。 ManagementメニューからSQLプロファイラのプルアサイドメニューに移動し、Open trace....を選択します。SQL Profiler toolbarメニューを使用してトレースを開くこともできます。 Open trace...オプションを選択します。 [トレースを開く… ]ダイアログが開きます。

Opening an existing trace

トレースリストのエントリーを強調表示し、[開く]をクリックして、選択したトレースを開きます。選択したトレースが[ SQLプロファイラー]タブで開きます。

トレースのフィルタリング

フィルターは、1つ以上のルールの名前付けセットであり、それぞれがトレースビューからイベントを非表示にできます。トレースにフィルターを適用すると、非表示のイベントはトレースから削除されず、表示から除外されるだけです。

Trace Filterダイアログを開き、フィルタを定義しルール(またはルールのセット)を作成するためのフィルタ]アイコンをクリックします。各ルールには、イベント、またはイベント中に呼び出されたクエリーを呼び出したロールのアイデンティティに基づいて、現在のトレース内のイベントをスクリーンします。

既存のフィルターを開くには、Openボタンを選択します。新しいフィルターを定義するには、Add (+)アイコンをクリックして、[全般]タブに表示されるテーブルに行を追加し、ルールの詳細を指定します。

  • Typeドロップダウンリストボックスを使用して、フィルタールールを適用するトレースフィールドを指定します。
  • Conditionドロップダウンリストボックスを使用して、 SQLプロファイラがトレースをフィルタリングするときに値に適用する演算子のタイプを指定します。
  • 指定された値を含むMatches toフィルターイベントを選択します。
  • Does not matchを選択して、指定された値を含まないイベントをフィルタリングします。
  • [値]フィールドで指定された文字列と完全にマッチするイベントをフィルタリングするには、Is equal toを選択します。
  • [Is not equal]を選択して、[値]フィールドで指定された文字列と完全にマッチしないイベントをフィルタリングします。
  • [値]フィールドで指定された文字列で始まるイベントをフィルタリングするには、Starts withを選択します。
  • [値]フィールドで指定された文字列で始まらないイベントをフィルタリングするには、Does not start withを選択します。
  • Less thanを選択して、[値]フィールドで指定された数値より小さい数値を持つイベントをフィルターします。
  • [Greater than]を選択して、[値]フィールドで指定された数値より大きい数値を持つイベントをフィルターします。
  • [値]フィールドで指定された数値以下の数値を持つイベントをフィルタリングするには、Less than or equal toを選択します。
  • [値]フィールドで指定された数値以上の数値を持つイベントをフィルタリングするには、Greater than or equal toを選択します。
  • Valueフィールドを使用して、 SQLプロファイラーが検索する文字列、数値、または正規表現を指定します。

ルールの定義が終了したら、追加(+)アイコンをクリックして、フィルターに別のルールを追加します。フィルタからルールを削除するには、ルールを強調表示し、[削除]アイコンをクリックしてください。

Saveボタンをクリックして、フィルターを適用せずにフィルター定義をファイルに保存します。フィルターを適用するには、OKをクリックします。 Cancelを選択してダイアログを終了し、フィルターへの変更を破棄します。

トレースを削除する

トレースを削除するには、PEMクライアントツリーコントロールでプロファイルされたデータベースの名前を強調表示します。あなたはまた、トレースを削除するには、SQLプロファイラのツールバーメニューを使用することができますDelete trace(s).... SQLプロファイラプルさておきメニューにManagementメニューをナビゲートし、選択します。 Delete trace(s)...オプションを選択します。 Delete tracesダイアログが開きます。

The Delete traces… dialog

トレース名前の左側にあるアイコンをクリックして、1つ以上のトレースを削除対象としてマーク、Deleteをクリックします。 PEMクライアントは、選択したトレースが削除されたことを確認します。

スケジュールされたトレースの表示

スケジュールされたトレースのリストをビューするには、PEMクライアントツリーコントロールでプロファイルされたデータベースの名前を強調表示します。あなたはまた、リストにSQLプロファイラのツールバーメニューを使用することができますScheduled traces... SQLプロファイラプルさておきメニューにManagementメニューをナビゲートし、選択します。 Scheduled traces...オプションを選択します。

Reviewing scheduled traces

Scheduled traces...ダイアログには、実行を待機しているトレースのリストが表示されます。トレース名前の左側にある編集ボタンをクリックして、トレースに関する詳細情報にアクセスします。

  • Statusフィールドには、現在のトレースのステータスがリストされます。
  • トレースが有効な場合、Enabled?スイッチはYesを表示します。無効になっている場合はいいえ。
  • Nameフィールドには、トレースの名前が表示されます。
  • Agentフィールドには、トレースの実行を担当するエージェントの名前が表示されます。
  • Last runフィールドには、トレースの最後の実行の日付と時刻が表示されます。
  • Next runフィールドには、次にスケジュールされたトレースの日付と時刻が表示されます。
  • Createdフィールドには、トレースが定義された日時が表示されます。

インデックスアドバイザーの使用

Index AdvisorはAdvanced Server 9.0以降で配布されます。インデックスアドバイザは、 SQLプロファイラと連携して、収集されたSQLステートメントを調べ、基になるテーブルのインデックス作成の推奨事項を作成して、 SQL応答時間を改善します。インデックスアドバイザーは、スーパーユーザによって呼び出されるすべてのDML(INSERT、UPDATE、DELETE)およびSELECTステートメントで機能します。

インデックスアドバイザーからの診断出力には以下が含まれます。

  • 推奨されるインデックスから予測されるパフォーマンスの利点
  • 推奨されるインデックスの予測サイズ
  • 推奨インデックスの作成に使用できるDDLステートメント

インデックスアドバイザーを使用する前に、以下を行う必要があります。

1.各Advanced Serverホストでpostgresql.confファイルを変更し、index_advisorライブラリをshared_preload_librariesパラメータに追加します。

  1. Index Advisor contribモジュールをインストールします。モジュールをインストールするには、 psqlクライアントまたはPEMクエリツールを使用してデータベースに接続し、次のコマンドを呼び出します。

    • \i <complete_path>/share/contrib/index_advisor.sql

3.変更を有効にするためにサーバーを再起動します。

索引アドバイザーは、SQLプロファイラでキャプチャされたトレースデータに基づいてインデックス勧告をmakeことができます。 SQL Profiler Trace Dataペインで1つ以上のクエリを強調表示して、Index Advisorツールバーボタンをクリックするか、[表示]メニューから[インデックスアドバイザー]を選択します。 Index Advisorの詳細な使用情報については、 EDB Postgres Advanced Server Guideをご覧ください。

ノート:インデックスアドバイザーは、非スーパーユーザーによって呼び出されたステートメントを分析できません。非スーパーユーザーによって呼び出されたステートメントを分析しようとすると、サーバーログに次のエラーが含まれます。

ERROR: access to library "index_advisor" is not allowed

Note * pg_dump機能の使用中は、インデックスアドバイザーを無効にすることをお勧めします。

設定および索引アドバイザーを使用しての詳細については、EDBから入手EDB Postgres Advanced Serverのガイドを、で参照してください。

https://www.enterprisedb.com/docs

Uninstalling SQL Profiler