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

ApsaraDB RDS:クエリガバナンス

最終更新日:May 13, 2026

Database Autonomy Service (DAS) は、RDS MySQL 向けのクエリガバナンス機能を提供します。この機能は、オフラインデータ分析を使用して、前日のすべての低速 SQL クエリを分析し、自動的にタグ付けします。このプロセスは毎日午前 1 時に実行され、クエリを分類して最適化の優先順位を付けるのに役立ちます。

前提条件

  • インスタンスは、次のいずれかのエディションである必要があります。

    • RDS MySQL 8.4 High-availability Edition または Cluster Edition

    • RDS MySQL 8.0 High-availability Edition、3ノード Enterprise Edition、または Cluster Edition

    • RDS MySQL 5.7 High-availability Edition、3ノード Enterprise Edition、または Cluster Edition

    • RDS MySQL 5.6 High-availability Edition

    • RDS MySQL 5.5 High-availability Edition

  • この機能は現在、中国本土、香港 (中国)、およびシンガポールリージョンのデータベースインスタンスをサポートしています。

    説明

    香港 (中国) およびシンガポールリージョンのデータベースインスタンスのサポートは、2023 年 4 月 1 日に追加されました。

制限事項

  • クエリガバナンスは T+1 オフライン分析を使用するため、クエリに 最適化不要 のタグを付けた場合、最適化可能な SQL の件数の変更は翌日に反映されます。

  • DAS で事前定義された SQL タグを無効にすることはできません。

  • データベースインスタンスごとに、DAS は実行回数順の上位 200 件の低速 SQL クエリのみを分析します。したがって、低速 SQL テンプレートの数 の最大数は 200 です。

用語

用語

説明

最適化可能な SQL

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

最適化する必要のない SQL テンプレート

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

DAS を無視

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

操作手順

  1. RDSインスタンスにアクセスし、上部のリージョンを選択し、対象のRDSインスタンスのIDをクリックします。
  2. 左側のナビゲーションペインで、自律型サービス > 低速 SQL を選択します

  3. クエリのガバナンス タブをクリックします。

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

    時間、リージョン、データベースエンジンを指定し、1 つ以上のインスタンス ID を入力して、以下のセクションに表示される指定されたデータベースインスタンスのクエリガバナンス結果を表示できます。

    • [概要]: このセクションには、SQL テンプレートが分類され、タグが追加された後のクエリガバナンス結果が表示されます。

      説明

      SQL 実行の失敗回数 を表示するには、DAS Enterprise Edition を購入する必要があります。

    • [トレンドチャート]: このセクションには、特定の期間におけるクエリガバナンス結果の変化のトレンドが表示されます。

    • 上位ランキング: このセクションには、最もパフォーマンスの高いインスタンス チャートと 最もパフォーマンスの低いインスタンス チャートが表示されます。

      • 最低パフォーマンスのインスタンス: データベースインスタンスは、各インスタンスで実行されたスロークエリの数に基づいて降順に表示されます。これは、最も多くのスロークエリが実行されたインスタンスを特定するのに役立ちます。

      • 最高パフォーマンスのインスタンス: データベースインスタンスは、各インスタンスで実行されたスロークエリの数の変化に基づいて昇順に表示されます。負の値は、前日に実行されたスロークエリの数と比較して、実行されたスロークエリの数が少ないことを示します。正の値は、前日に実行されたスロークエリの数と比較して、実行されたスロークエリの数が多いことを示します。これは、SQL 最適化が最も効果的なインスタンスを特定するのに役立ちます。

      最も多くのスロークエリが実行されたインスタンスと、SQL 最適化が最も効果的なインスタンスにすぐに注意することをお勧めします。

    • 最適化対象の SQL: フィルター条件を指定して、管理する SQL 文をフィルタリングできます。

      説明

      データベース名、SQL キーワード、ルールタグ、データベースアカウントのユーザー名など、次のフィルター条件を指定できます。4 つのフィルター条件は、AND 演算子を使用して評価されます。

      • 複数のデータベース名はコンマ(,)で区切ります。データベース名は OR 演算子を使用して評価されます。

      • 複数の SQL キーワードはスペースで区切ります。SQL キーワードは AND 演算子を使用して評価されます。

      • 複数のデータベースアカウントのユーザー名はコンマ(,)で区切ります。ユーザー名は OR 演算子を使用して評価されます。

      • 複数のルールタグを選択できます。選択したルールは OR 演算子を使用して評価されます。

      • SQL 文のサンプルを見つけて、操作 列の 提案 をクリックして、クエリガバナンスに関する提案を表示できます。

      • SQL 文のサンプルを見つけて、操作 列の タグの追加 をクリックして、SQL 文にタグを追加できます。タグの詳細については、このトピックのタグの説明を参照してください。

        複数の SQL 文のサンプルを選択して、一度にそれらの SQL 文にタグを追加することもできます。

      • SQL 文のサンプルを見つけて、操作 列の [サンプル] をクリックして、SQL 文のスロークエリログを表示できます。

      • SQL 文のサンプルを見つけて、操作 列の 推移 をクリックして、SQL 文のスロークエリログ分析の詳細を表示できます。スロークエリの分析と管理方法の詳細については、スロークエリログ分析を参照してください。

      ビジネス要件に基づいて、最適化する SQL テンプレートのデータをエクスポートおよび共有できます。詳細については、このトピックのベストプラクティスセクションを参照してください。

    • 失敗した SQL: フィルター条件を指定して、表示する SQL 文をフィルタリングできます。

      説明
      • 失敗した SQL を表示するには、DAS Enterprise Edition を購入する必要があります。

      • データベース名と SQL キーワードを指定して、SQL 文をフィルタリングできます。フィルター条件は、AND 演算子を使用して評価されます。

        • 複数のデータベース名はコンマ(,)で区切ります。データベース名は OR 演算子を使用して評価されます。

        • 複数の SQL キーワードはスペースで区切ります。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 クエリ

普通

3 つ以上のテーブルを結合するために JOIN オペレーターが使用されている 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()NULLNULL 関数を使用して 値を確認する SQL テンプレート。値のいずれかが NULL の場合、 が返されるため、ISNULL() 関数を使用して NULL 値を見つけることはできません。

COUNT_NOT_STAR

無効な COUNT 構文

致命的

無効な COUNT 構文を含む SQL テンプレート。COUNT(*) を使用してデータレコードの数をクエリします。COUNT (Column name) または COUNT (Constant) 構文を使用しないでください。COUNT(*) は、行数をクエリするために SQL92 で定義されている標準構文です。COUNT(*) 構文は、NULL 値を含むデータレコードの数をカウントし、すべての種類のデータベースで実行できます。COUNT (Column name) 構文は、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 リストのステートメント数を継続的に減らすことができます。以下の SQL タグは手動でのタグ付けに対応しています。

ID

名前

重大度レベル

説明

USER_IGNORE

最適化する必要なし

普通

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

DAS_IMPORTANT

優先度の高い SQL

普通

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

DAS_NOT_IMPORTANT

優先度の低い SQL

普通

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

DAS_IN_PLAN

後で最適化

普通

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

データのエクスポート

  • [エクスポートタスクの作成] をクリックして、SQL の詳細 ビューに現在表示されているすべてのデータをダウンロードできます。

    説明

    エクスポートタスクのデータは 3 日間保持されます。

  • インスタンスやルールなど、異なるフィルタを使用して個別のダウンロードタスクを作成できます。これらのタスクは、最適化のために異なるチームメンバーに割り当てることができます。

  • 特定の SQL レコードを選択することもできます。エクスポートタスクには、選択したレコードのみが含まれます。

データの共有

フィルタリングされた低速 SQL クエリを担当チームメンバーとすばやく共有できるように、DAS は 2 つの共有オプションを提供します。

  • 複数の SQL レコードを選択して 一括共有 をクリックできます。システムによって短縮リンクが生成されます。生成されたリンクには、DAS コンソールの権限を持つユーザーにのみ、選択した SQL レコードが表示されます。

  • 共有 の横にある エクスポート ボタンをクリックすることもできます。システムによって短縮リンクが生成され、DAS コンソールの権限を持つユーザーがこのリンクを開くと、同じフィルターが適用された状態で、現在ページに表示されているすべての詳細が表示されます。