すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:クエリガバナンス

最終更新日:Nov 09, 2025

Database Autonomy Service (DAS) は、ApsaraDB RDS for PostgreSQL 向けのクエリガバナンス機能を提供します。この機能は、オフラインデータ分析を使用して、毎日 01:00 に前日の遅い SQL 文を分析します。DAS はこれらの文に自動的にタグを追加し、ガバナンスのために分類し、優先順位を付けるのに役立ちます。この機能は、最適化の提案も提供し、データをエクスポートすることもできます。

前提条件

  • ApsaraDB RDS for PostgreSQL インスタンスが High-availability Edition インスタンスであること。

  • データベースインスタンスが中国本土のリージョン、中国 (香港) リージョン、またはシンガポールリージョンにデプロイされていること。

    説明

    2023 年 4 月 1 日から、クエリガバナンス機能は、中国 (香港) およびシンガポールリージョンにあるデータベースインスタンスでサポートされます。

制限事項

  • クエリガバナンス機能は、トランザクションの翌日 (T+1) にオフラインデータを分析することによって実装されます。たとえば、SQL テンプレートに 最適化不要 タグを追加すると、その SQL テンプレートは翌日に最適化が必要な SQL テンプレートから削除されます。

  • システムによって追加されたタグは変更または削除できません。

  • 各データベースインスタンスについて、DAS は最も頻繁に実行される上位 200 件のスロークエリのみをカウントして分析します。これは、データベースインスタンスのスロー SQL テンプレートの最大数が 200 であることを示します。

用語

用語

説明

最適化可能な SQL

スロークエリを引き起こし、最適化が必要な SQL テンプレート。

最適化が不要な SQL テンプレート

スロークエリを引き起こし、DAS が自動的に DAS を無視 タグを追加するか、ユーザーが 最適化不要 タグを追加する SQL テンプレート。

DAS を無視

スロークエリを引き起こし、DAS が自動的に 最適化不要 タグを追加する SQL テンプレート。これらの SQL テンプレートには、SHOWCREATEXACOMMITROLLBACKSELECT SLEEP、または EXPLAIN 文で始まる SQL テンプレートが含まれます。

手順

  1. [インスタンス] ページに移動します。上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。次に、RDS インスタンスを見つけて、インスタンスの ID をクリックします。

  2. 左側のナビゲーションウィンドウで、自律型サービス > 低速 SQL > クエリのガバナンス を選択します。

  3. クエリのガバナンス ページで、クエリガバナンスの結果を表示します。

    • クエリガバナンスの概要: システムが SQL 文を分類し、タグ付けした後の結果を表示します。

      説明

      SQL 実行の失敗回数 の統計は、DAS Enterprise Edition が有効になっているインスタンスに対してのみ収集されます。

    • クエリガバナンスの傾向: 選択した時間範囲におけるクエリガバナンス結果の傾向を表示します。

    • 上位ランキング: 最もパフォーマンスの高いインスタンス最もパフォーマンスの低いインスタンス のチャートを表示します。

      • 最もパフォーマンスの低いインスタンス: データベースインスタンスでの遅い SQL 文の実行数を示します。

      • 最もパフォーマンスの高いインスタンス: 遅い SQL 文の実行数の変化を示します。負の数は減少と最適化の成功を示し、正の数は増加を示します。

      DAS は、最適化可能な SQL の最もパフォーマンスの高いチャートと最もパフォーマンスの低いチャートに注目することを推奨します。

    • 最適化対象の SQL: フィルター条件を設定して、ガバナンスが必要な SQL 文を検索できます。

      説明

      DB 名、SQL キーワード、ルールタグ、およびデータベースのユーザー名で文をフィルターできます。これらの条件は論理 AND で結合されます。

      • 複数の DB 名を指定するには、コンマ (,) で区切ります。これにより、論理 OR が作成されます。

      • 複数の SQL キーワードを指定するには、スペースで区切ります。これにより、論理 AND が作成されます。

      • 複数のデータベースユーザー名を指定するには、コンマ (,) で区切ります。これにより、論理 OR が作成されます。

      • 複数のルールタグを選択できます。これにより、論理 OR が作成されます。

      • 対象の SQL 文の 操作 列にある 提案 をクリックして、詳細なガバナンスの提案を表示します。

      • 対象の SQL 文の 操作 列にある タグの追加 をクリックして、手動でタグを追加します。詳細については、「手動タグ」をご参照ください。

        複数の SQL 文を選択し、バッチでタグ付けすることもできます。

      • 対象の SQL 文の 操作 列にある [サンプル] をクリックして、スロークエリログサンプルの詳細を表示します。

      • 対象の SQL 文の 操作 列にある 推移 をクリックして、遅い SQL 文の分析詳細を表示します。スロークエリログ分析の詳細については、「スロー SQL」をご参照ください。

      最適化が必要な SQL 文のデータをエクスポートして共有できます。詳細については、「ベストプラクティス」をご参照ください。

    • 失敗した SQL: フィルター条件を設定して、表示したい失敗した SQL 文を検索できます。

      説明
      • 失敗した SQL の統計は、DAS Enterprise Edition が有効になっているインスタンスに対してのみ収集されます。

      • DB 名と SQL キーワードで文をフィルターできます。これらの条件は論理 AND で結合されます。

        • 複数の DB 名を指定するには、コンマ (,) で区切ります。これにより、論理 OR が作成されます。

        • 複数の SQL キーワードを指定するには、スペースで区切ります。これにより、論理 AND が作成されます。

      対象の SQL 文の 操作 列にある [サンプル] をクリックして、サンプルの詳細を表示します。

ベストプラクティス

  • タグを使用して、最適化が必要な SQL 文を特定します。

    クエリガバナンスのコアロジックは、[すべての遅い SQL 文]最適化不要最適化可能な SQL の 2 つのカテゴリに分けることです。SQL タグを使用して、文をすばやくフィルターし、最適化の優先順位を付けることができます。

    ID

    名前

    重要度レベル

    即時対応が必要

    説明

    NEW_SQL

    新しいスロー SQL

    クリティカル

    ✔️

    過去 7 日以内にスロークエリを引き起こした SQL テンプレート。

    DAS_IGNORE

    無視

    法線

    DAS が自動的に 最適化不要 タグを追加する SQL テンプレート。これらの SQL テンプレートには、SHOWCREATEXACOMMITROLLBACKSELECT SLEEP、または EXPLAIN 文で始まる SQL テンプレートが含まれます。

    FUZZY_LIKE

    LIKE クエリ

    法線

    LIKE オペレーターがファジーマッチングの実装に使用される SQL テンプレート。LIKE オペレーターを含むクエリではインデックスを使用できません。

    HAS_EXPR

    含まれる式

    法線

    計算式を含む SQL テンプレート。関連する列ではインデックスを使用できません。

    LARGE_IN_LIST

    大規模リストクエリ

    法線

    IN オペレーターに 200 を超える要素が指定されている SQL テンプレート。このような SQL テンプレートは、プログラムによって自動的に生成される場合があります。関連する列ではインデックスを使用できません。

    SELECT_STAR

    全列クエリ

    法線

    SELECT 句で 1 つ以上のフィールドが指定されているが、条件が指定されていない SQL テンプレート。条件を指定しない場合、不要なデータのクエリにリソースが浪費されます。これにより、クエリのパフォーマンスが低下します。

    INDEX_ADVISOR

    インデックスの提案

    法線

    ✔️

    インデックスが作成されていないテーブルからデータをクエリするために使用される SQL テンプレート。SQL クエリを高速化するためにインデックスを作成して使用することをお勧めします。

    COMPLEX_JOIN

    複雑な JOIN クエリ

    法線

    JOIN オペレーターが 3 つ以上のテーブルを結合するために使用される SQL テンプレート。JOIN オペレーターを使用して 3 つ以上のテーブルを結合することはできません。結合するテーブルで指定されたフィールドのデータの型は同じである必要があります。複数のテーブルを結合する前に、テーブルでクエリするフィールドのインデックスを作成していることを確認してください。

    CROSS_DB

    クロスデータベースクエリ

    法線

    異なるデータベースのデータをクエリするために使用される SQL テンプレート。データベースまたはテーブルが元のデータベースインスタンスから別のデータベースインスタンスに移行された後、クロスデータベースクエリが失敗する可能性があります。

    SUBQUERY

    含まれるサブクエリ

    法線

    サブクエリの SQL 文を含む SQL テンプレート。SQL テンプレートを再書き込みし、JOIN オペレーターを使用してクエリをより効率的にすることをお勧めします。

    DEEP_PAGING

    ディープページング

    クリティカル

    LIMIT オペレーターがディープページングメソッドの実装に使用される SQL テンプレート。SQL テンプレートを再書き込みし、LIMIT オペレーターの代わりに JOIN オペレーターを使用することをお勧めします。

    WITHOUT_PREDICATE

    述語なし

    クリティカル

    ✔️

    述語を含まない SQL テンプレート。ビジネスで全表スキャンが必要かどうかを確認してください。ビジネスで全表スキャンが必要ない場合は、SQL テンプレートを再書き込みしてください。

    NULL_COMPARE

    Null マッチエラー

    クリティカル

    ISNULL() 関数が NULL 値のチェックに使用される SQL テンプレート。値の 1 つが NULL の場合、NULL が返されるため、ISNULL() 関数を使用して NULL 値を見つけることはできません。

    COUNT_NOT_STAR

    無効な COUNT 構文

    クリティカル

    無効な COUNT 構文を含む SQL テンプレート。データレコードの数をクエリするには COUNT(*) を使用します。COUNT (列名) または COUNT (定数) 構文は使用しないでください。COUNT(*) は、行数をクエリするために SQL92 で定義された標準構文です。COUNT(*) 構文は、NULL 値を含むデータレコードの数をカウントし、すべてのタイプのデータベースで実行できます。COUNT (列名) 構文は NULL 値をカウントしません。

    LARGE_ROWS_EXAMINED

    過剰なスキャン行

    法線

    平均で 50,000 行以上をスキャンするために使用される SQL テンプレート。行数が多いほど、より多くのデータベースリソースを消費します。これにより、SQL クエリの実行が遅くなり、他の SQL クエリに影響します。

    説明

    SQL 文では、より具体的なフィルター条件を使用することをお勧めします。

    LARGE_ROWS_SENT

    過剰な返却行

    法線

    平均で 5,000 行以上のデータが返されるクエリで使用される SQL テンプレート。返される行数を減らすために SQL テンプレートを変更することをお勧めします。

    NO_ADVICE

    提案なし

    法線

    提案は提供されません。

    PERIOD_SQL

    周期的

    法線

    毎日特定の時点で実行される SQL テンプレート。

    DAS は、最適化可能な SQL に注目することを推奨します。次の表のタグを使用して、SQL 文に手動で 最適化不要 のタグを付け、最適化可能な SQL 文の数を継続的に減らします。

    ID

    名前

    重要度レベル

    説明

    USER_IGNORE

    最適化不要

    法線

    このタグを SQL テンプレートに追加すると、その SQL テンプレートは翌日に最適化が必要な SQL テンプレートにはカウントされません。

    DAS_IMPORTANT

    優先度の高い SQL

    法線

    優先度の高い SQL テンプレートにこのタグを追加します。

    DAS_NOT_IMPORTANT

    優先度の低い SQL

    法線

    優先度の低い SQL テンプレートにこのタグを追加します。

    DAS_IN_PLAN

    後で最適化

    法線

    後で最適化する SQL テンプレートにこのタグを追加します。

  • データのエクスポート。

    • SQL の詳細 セクションの右上隅にある [エクスポート] をクリックして、フィルターされた SQL テンプレートのデータをエクスポートします。

      説明

      エクスポートされたデータは 3 日間ダウンロード可能です。

    • さまざまな条件を指定して SQL テンプレートをフィルターできます。たとえば、データベースまたはルールタグに基づいて SQL テンプレートをフィルターし、ダウンロードタスクを作成し、データベースまたはルールタグに基づいて SQL テンプレートを最適化するために異なるオーナーを割り当てることができます。

    • 複数の SQL テンプレートを選択し、選択した SQL テンプレートのデータをエクスポートすることもできます。

  • データの共有。

    SQL テンプレートをフィルターし、フィルターされた SQL テンプレートを対応する SQL テンプレートのオーナーと共有できます。次のいずれかの方法でデータを共有できます。

    • SQL テンプレートを選択し、セクションの下部にある 一括共有 をクリックします。システムが URL を生成します。URL が指すページには、選択した SQL テンプレートに関する情報が表示されます。DAS の権限が付与されている場合は、そのページにアクセスして、選択した SQL テンプレートに関する情報を表示できます。

    • 条件を指定して SQL テンプレートをフィルターし、エクスポート の右側にある 共有 をクリックします。システムが URL を生成します。URL が指すページには、フィルターされた SQL テンプレートに関する情報が表示されます。DAS の権限が付与されている場合は、そのページにアクセスして、フィルターされたすべての SQL テンプレートに関する情報を表示できます。