次の方法で共有


Azure Database for PostgreSQL - フレキシブル サーバー (プレビュー) でインデックス チューニングによって生成されるインデックスのレコメンデーションを使用する

インデックス チューニングでは、azure_sys データベース内の intelligentperformance スキーマにある一連のテーブルで作成されるレコメンデーションが保持されます。

現時点では、この情報は、この目的のために Azure portal ページ ビルドを使用するか、クエリを実行して azure_sys データベースの intelligent performance 内で使用可能な 2 つのビューからデータを取得することで読み取ることができます。

Azure portal を使用してインデックスのレコメンデーションを使用する

  1. Azure portal にサインインし、Azure Database for PostgreSQL フレキシブル サーバー インスタンスを選択します。

  2. メニューの [インテリジェント パフォーマンス] セクションで、[インデックスの チューニング (プレビュー)] を選択 します。

    • この機能が有効になっていても、レコメンデーションがまだ生成されていない場合、画面は次のようになります。

      機能が有効になっているがレコメンデーションがない場合の [インデックスのチューニング (プレビュー)] ページの側面を示すスクリーンショット。

    • この機能が現在無効になっており、過去にレコメンデーションが生成されていない場合、画面は次のようになります。

      機能が無効でレコメンデーションがない場合の [インデックスのチューニング (プレビュー)]ページの側面を示すスクリーンショット。

    • この機能が有効になっていて、レコメンデーションがまだ生成されていない場合、画面は次のようになります。

      機能が有効になっていてレコメンデーションがない場合の [インデックスのチューニング (プレビュー)] ページの側面を示すスクリーンショット。

    • 機能が無効になっているが、レコメンデーションが生成されている場合、画面は次のようになります。

      機能が無効になっており、レコメンデーションがある場合の [インデックスのチューニング (プレビュー)]ページの側面を示すスクリーンショット。

  3. 使用可能なレコメンデーションがある場合は、[インデックスのレコメンデーション表示] の要約を選択して、完全な一覧にアクセスします。

    レコメンデーションがある場合の [インデックスのチューニング (プレビュー)] ページの側面と、完全な一覧にアクセスする方法を示すスクリーンショット。

  4. この一覧には、使用可能なすべてのレコメンデーションと、それぞれの詳細が表示されます。 既定では、一覧は [最終レコメンデーション] (降順) で並べ替えられます。一番上に最新のレコメンデーションが表示されます。 ただし、他の列で並べ替え、フィルター ボックスを使用することで、表示される項目の一覧を、データベース名、スキーマ名、またはテーブル名に指定されたテキストが含まれている項目に絞り込むことができます。

    いくつかのレコメンデーションを含む [インデックスのレコメンデーション] ページの側面を示すスクリーンショット。

  5. 特定のレコメンデーションに関する詳細情報を表示するには、そのレコメンデーションの名前を選択すると、画面の右側に [インデックスのレコメンデーションの詳細] ウィンドウが開き、そのレコメンデーションに関して使用可能なすべての詳細が表示されます。

    1 つの特定のレコメンデーションの [インデックスのレコメンデーションの詳細] ウィンドウの側面を示すスクリーンショット。

azure_sys データベースで使用可能なビューを使用してインデックスのレコメンデーションを使用する

  1. インスタンスに接続するためのアクセス許可を持つ任意のロールを使用して、サーバーで使用可能な azure_sys データベースに接続します。 public ロールのメンバーは、これらのビューから読み取ることができます。
  2. CREATE INDEX と DROP INDEX のレコメンデーションのインデックス チューニングによって生成されたレコメンデーションを取得するには、createindexrecommendations および dropindexrecommendations ビューに対してクエリを実行します。

表示

azure_sys データベース内のビューは、インデックスのチューニングによって生成されたインデックスのレコメンデーションにアクセスして取得する便利な方法を提供します。 具体的には、createindexrecommendations および dropindexrecommendations ビューにはそれぞれ、CREATE INDEX と DROP INDEX のレコメンデーションに関する詳細情報が含まれています。 これらのビューでは、セッション ID、データベース名、アドバイザーの種類、チューニング セッションの開始時刻と停止時間、レコメンデーション ID、レコメンデーションの種類、レコメンデーションの理由、その他の関連する詳細などのデータが公開されます。 これらのビューに対してクエリを実行することで、ユーザーはインデックスのチューニングによって生成されたインデックスのレコメンデーションに簡単にアクセスして分析できます。

intelligentperformace.createindexrecommendations

createindexrecommendations ビューでは、基になるテーブルでデータを引き続き使用できるチューニング セッションで生成されたすべての CREATE INDEX レコメンデーションのすべての詳細が公開されます。

列名 データ型 (data type) 説明
session_id char(36) グローバル一意識別子が、すべての新しいチューニング セッションに割り当てられます。 チューニング セッションで CREATE INDEX と DROP INDEX のレコメンデーションが生成される場合、このビューと dropindexrecommendations ビューには同じ値の行があります。
database_name varchar(64) レコメンデーションが生成されたコンテキストのデータベースの名前。
advisor_type varchar(64) 定数値 createindex
start_time timestamp このレコメンデーションを生成したチューニング セッションが開始されたタイムスタンプ。
stop_time timestamp このレコメンデーションを生成したチューニング セッションが開始されたタイムスタンプ。 セッションが進行中の場合、または何らかの障害が原因で中止された場合は NULL。
session_context json 分析されたワークロードの詳細を記述するコンテキスト。 具体的には、この特定のセッションのターゲットであった時間枠、キャッチされた例外の一覧 (存在する場合)、分析されたワークロード内のクエリの合計数、および調査されたクエリ識別子の一覧を定義します。
pg_recommendation_state_type セッションが失敗したか、正常に完了したか、進行中であるかを表します。 ErrorSuccess または InProgress
recommendation_id 最小 ゼロから始まる単調に増加する整数が、チューニング セッションのコンテキスト内で生成される各レコメンデーションに割り当てられます。 新しいチューニング セッションごとに 0 にリセットします。
recommendation_type varchar(64) 定数値 CreateIndex
reason varchar(1024) このレコメンデーションが生成された理由を正当である根拠。 通常、1 つ以上の文字列が結合され、"列 {columnName} はクエリ {queryId} の {Join On / Equal Predicate / Non-Equal Predicate / Group By / Order By} 句にあります" といった形式になります。
recommendation_context json レコメンデーションの影響を受けるクエリのクエリ識別子の一覧、推奨されるインデックスの種類、インデックスが推奨されるスキーマの名前およびテーブルの名前、インデックス列、インデックス名、推奨インデックスの推定サイズ (バイト単位) が含まれます。

intelligentperformace.dropindexrecommendations

dropindexrecommendations では、基になるテーブルでデータを引き続き使用できるチューニング セッションで生成されたすべての DROP INDEX レコメンデーションのすべての詳細が公開されます。

列名 データ型 (data type) 説明
session_id uuid グローバル一意識別子が、すべての新しいチューニング セッションに割り当てられます。 チューニング セッションで CREATE INDEX と DROP INDEX のレコメンデーションが生成される場合、このビューには行があり、同じ値を持つインデックスのレコメンデーション ビューが作成されます。
database_name text レコメンデーションが生成されたコンテキスト内のデータベースの名前。
start_time timestamp このレコメンデーションを生成したチューニング セッションが開始されたタイムスタンプ。
end_time timestamp このレコメンデーションを生成したチューニング セッションが開始されたタイムスタンプ。 セッションが進行中の場合、または何らかの障害が原因で中止された場合は NULL。
メッセージ text 分析されたワークロードの詳細を記述するコンテキスト。 具体的には、この特定のセッションのターゲットであった時間枠、キャッチされた例外の一覧 (存在する場合)、分析されたワークロード内のクエリの合計数、および調査されたクエリ識別子の一覧を定義します。
recommendation_id int 10000 から始まる単調に増加する整数が、すべてのチューニング セッションのコンテキスト内で生成される各レコメンデーションに割り当てられます。 新しいチューニング セッションごとに 0 にリセットされません。
schema_name text インデックスが存在するスキーマの名前。
table_name text インデックスが作成されるテーブルの名前
index_type text pg_am によって公開されるアクセス機構の名前で説明されているインデックスの型。
index_name text インデックス名。
column_list text インデックスのキーを構成する列の名前。
command text 推奨されるアクションを実装するための DROP INDEX ステートメント。
特典 double precision 推定されるベネフィット。
index_size double precision インデックスの推定サイズ。
reason text このレコメンデーションが生成された理由を正当である根拠。 通常、重複するインデックスの場合、"Duplicate of "{indexName}" のようなメッセージが報告されます。 同等のインデックス "{IndexName}" {は主キーですが、 / は一意のインデックスですが、 / は制約ですが、 / は有効なインデックスですが、/ はレプリカ ID として選択されていますが、 / はテーブルのクラスター化に使用されましたが、 / 推定サイズが小さくなりますが、 / より多くのインデックス スキャンが行われました / より多くフェッチが発生しました / より多く読み込みが発生しました} (比較対象: {duplicateIndexName})。 必要に応じて、インデックスが重複として識別されるだけでなく、index_tuning.unused_min_period 日を超えて使用されなかったと判断された場合は、上記のいずれかに次のメッセージが追加されます。"また、インデックスは過去 {days} 日に使用されていません。

未使用のインデックスの場合、メッセージは "インデックスは過去 {days} 日間使用されていません" となります。

インデックスの推奨事項を適用する

インデックスの推奨事項には、推奨事項を実装するために実行できる SQL ステートメントが含まれています。

次のセクションでは、特定の推奨事項に対してこのステートメントを取得する方法を示します。

ステートメントを作成したら、任意の PostgreSQL クライアントを使用してサーバーに接続し、レコメンデーションを適用できます。

Azure portal の [インデックスのチューニング (プレビュー)] ページを使用して SQL ステートメントを取得する

  1. Azure portal にサインインし、Azure Database for PostgreSQL フレキシブル サーバー インスタンスを選択します。

  2. メニューの [インテリジェント パフォーマンス] セクションで、[インデックスの チューニング (プレビュー)] を選択 します。

  3. インデックスのチューニングによってレコメンデーションが既に生成されていると仮定して、[インデックスのレコメンデーションの表示] の要約を選択して、使用可能なレコメンデーションの一覧にアクセスします。

    レコメンデーションがある場合の [インデックスのチューニング (プレビュー)] ページの側面と、完全な一覧にアクセスする方法を示すスクリーンショット。

  4. レコメンデーションの一覧から、次のいずれかを行います。

    • SQL ステートメントを取得するレコメンデーションの右側にある省略記号を選択し、[SQL スクリプトのコピー] を選択します。

      [インデックスのレコメンデーション] ページから SQL ステートメントをコピーする方法を示すスクリーンショット。

    • または、レコメンデーションの名前を選択してインデックスのレコメンデーションの詳細を表示し、[SQL スクリプト] テキスト ボックスでクリップボードへのコピー アイコンを選択して SQL ステートメントをコピーします。

      [インデックスのレコメンデーションの詳細] ページから SQL ステートメントをコピーする方法を示すスクリーンショット。