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

ApsaraDB RDS:自動 SQL スロットリング

最終更新日:Mar 28, 2026

Database Autonomy Service (DAS) は、トラフィックスパイク発生時に問題のある SQL ステートメントを自動的に検出し、キーワード単位でスロットルします(手動介入不要)。これにより、急激な同時実行数の増加、インデックス未設定のクエリ、または悪意あるリクエストパターンなどによって引き起こされる ApsaraDB RDS インスタンスのパフォーマンス低下を防止します。

サポート対象バージョン

自動 SQL スロットリングは、以下の MySQL バージョンおよびエディションで実行中の ApsaraDB RDS インスタンスで利用可能です:

MySQL バージョンサポート対象エディション
MySQL 8.0RDS High-availability Edition、RDS Enterprise Edition
MySQL 5.7RDS High-availability Edition、RDS Enterprise Edition
MySQL 5.6RDS High-availability Edition

ユースケース

自動 SQL スロットリングは、以下のシナリオを想定して設計されています:

  • トラフィックスパイク:キャッシュペネトレーションや不審なリクエストにより、特定タイプの SQL クエリが一時的に大量に同時実行される状況。

  • 単一ユーザーによる高負荷クエリ:ユーザーが短時間に多数の SQL クエリを送信する(例:複数の注文を同時に確定するショッパー)ことで、データベースリソースを過剰に消費する状況。

  • インデックスの欠如:インデックスが設定されていない多数の SQL ステートメントが実行され、他のワークロードのパフォーマンスを低下させる状況。

制限事項

スロットリングモードは キーワード単位でのスロットリング です。

  • サポート対象の SQL タイプ: SELECTUPDATEDELETE、および INSERT

  • INSERT...SELECT... ステートメントはスロットルできません。

  • INSERT のスロットリングは、MySQL 8.0 を実行中の ApsaraDB RDS インスタンスおよび MySQL 5.7 または 8.0 を実行中の PolarDB for MySQL クラスターでのみサポートされます。

仕組み

自動 SQL スロットリングがトリガーされた場合の動作は、ご利用の ApsaraDB RDS インスタンスで実行中の MySQL バージョンによって異なります。

MySQL 5.6 または MySQL 5.7

スロットル対象の SQL ステートメントは中断され、クライアントに対して以下のエラーが返されます:

1317: "query execution was interrupted"

MySQL 8.0

スロットル対象の SQL ステートメントは Concurrency control waiting 状態に入ります。待機中のステートメント数が ccl_max_waiting_count パラメーターの値を超えると、以下のエラーが返されます:

ERROR 7534 (HY000): "Concurrency control waiting count exceed max waiting count"

ccl_max_waiting_count パラメーターは、エラーが返されるまでの待機可能ステートメント数を制御します:

ccl_max_waiting_count の値動作
0(デフォルト)すべてのスロットル対象ステートメントは無期限に待機し、エラーは返されません。
0(DAS がスロットリングを有効化した場合)DAS が自動的に値を 10
任意の値 > 0DAS は指定された値を使用します。

自動 SQL スロットリングの有効化

  1. インスタンス ページに移動します。上部のナビゲーションバーから、ご利用の ApsaraDB RDS インスタンスが配置されているリージョンを選択します。該当インスタンスを見つけ、その ID をクリックします。

  2. 以下のいずれかのパスから、自律型機能管理 パネルを開きます:

    • 左側のナビゲーションウィンドウで、自律サービス診断 を選択します。自律センター タブをクリックし、「自律サービス設定」をクリックします。

    • 左側のナビゲーションウィンドウで、自律サービスダッシュボード を選択します。パフォーマンストレンド タブで、「自律サービス設定」をクリックします。

  3. 自律型機能設定 タブで自律サービスを有効化します。最適化およびスロットリング タブをクリックし、「自動スロットリング」を選択して、スロットリングのトリガー条件を構成します。

    構成されたタイムウィンドウ内で条件が満たされると、DAS はインスタンスのモニタリングを開始します。スロットリング開始後に問題が継続する場合は、DAS が自動的にスロットリング操作をロールバックします。スロットリングの持続時間は、最大スロットリング持続時間 の値を超えることはありません。
      パラメーター説明
      CPU 使用率 >CPU 使用率のしきい値です。70 以上の値を設定してください。たとえば、80 を入力すると、CPU 使用率が 80 % を超えた時点でスロットリングがトリガーされます。
      アクティブセッション数 >アクティブセッション数のしきい値です。CPU 使用率 との論理和(OR)関係で使用する場合は 16 以上、論理積(AND)関係で使用する場合は 2 以上を設定してください。たとえば、64 を入力すると、アクティブセッション数が 64 を超えた時点でスロットリングがトリガーされます。
      有効時間範囲自動 SQL スロットリングが有効となる時間範囲です。
      最大スロットリング持続時間単一のスロットリングイベントの最大持続時間です。0 を設定すると、スロットリングは即座にトリガーされますが、直ちに無効になります。
      持続時間 >CPU 使用率およびアクティブセッション数の条件が継続して成立する必要がある時間です。たとえば、2 分を入力すると、条件が 2 分以上継続した場合にのみスロットリングが有効になります。

      2

    • OK をクリックします。

    • (任意)アラート設定 セクションで、アラートテンプレートを構成し、スロットリングタスクの開始または終了時に通知を受信できるようにサブスクライブします。システムは推奨アラートテンプレートを提示し、関連する自律イベント用にアラートルールを事前に設定します。画面上の指示に従って構成を完了してください。

      1. アラート連絡先グループの選択 ステップで、アラート連絡先グループを選択します。詳細については、「アラート連絡先の管理」をご参照ください。

        • 連絡先の追加 をクリックして、新しいアラート連絡先を追加します。

        • 連絡先グループの作成 をクリックして、新しいアラート連絡先グループを作成します。

        • 編集 または 削除 をクリックして、既存の連絡先を更新または削除します。

      2. リソースとの関連付け ステップで、関連付けるリソースを確認します。

      3. 構成の送信 をクリックし、表示されるダイアログボックスで確認します。

      ご利用の ApsaraDB RDS インスタンスに既にアラートテンプレートが設定されている場合は、プロンプトに従って必要なアラートルールを追加してください。新規に作成する場合は、「アラートテンプレートの設定」および「アラートルールの設定」をご参照ください。

    スロットリング履歴の表示

    1. インスタンス ページに移動します。上部のナビゲーションバーから、ご利用の ApsaraDB RDS インスタンスが配置されているリージョンを選択します。該当インスタンスを見つけ、その ID をクリックします。

    2. 左側のナビゲーションウィンドウで、自律サービス診断 を選択します。

    3. セッション管理 タブをクリックします。

    4. インスタンスセッション セクションで、SQL スロットリング をクリックします。表示されるダイアログボックスで、ステータス別にスロットリングタスクを確認できます:

      タブ説明
      実行中現在有効なスロットリングルールです。この状態は、最大スロットリング持続時間 が満了するまで、または DAS が自動的に操作をロールバックするまで継続します。
      完了終了済みのスロットリングタスクです。履歴をフィルターするための時間範囲を選択できます。

      SQL限流

      SQL限流

    5. スロットリング構成時に 実行中の異常 SQL ステートメントを強制終了 を選択した場合、セッション終了履歴 をクリックして、終了されたセッションを確認できます。

    次のステップ

    • スロットリングではなく、SQL ステートメントの最適化およびリソース消費の削減を行うには、「自動 SQL 最適化」および「SQL 最適化」をご参照ください。

    • インスタンスのメトリックが自動スロットリングをトリガーするしきい値に達しない場合は、代わりに手動スロットリングルールを構成してください。「SQL スロットリング」をご参照ください。

    API リファレンス

    操作説明
    UpdateAutoThrottleRulesAsync複数のデータベースインスタンスに対して、自動 SQL スロットリングのパラメーターを非同期で構成します。
    GetAutoThrottleRulesデータベースインスタンスの自動 SQL スロットリングルールを照会します。
    DisableAutoThrottleRules複数のデータベースインスタンスに対して、自動 SQL スロットリング機能を無効化します。