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

ApsaraDB RDS:Automatic SQL throttling

最終更新日:Jul 16, 2026

Database Autonomy Service (DAS) は、手動介入なしで、トラフィックスパイク時に問題のある SQL ステートメントを自動的に検出し、キーワードによってスロットリングします。これにより、同時実行数の急増やインデックスのないクエリ、または不正なリクエストパターンによって引き起こされるパフォーマンスの低下から ApsaraDB RDS インスタンスを保護します。

サポート対象バージョン

自動 SQL スロットリングは、次の MySQL バージョンとエディションを実行している ApsaraDB RDS インスタンスで利用できます。

MySQL バージョン サポート対象エディション
MySQL 8.0 RDS High-availability Edition、RDS Enterprise Edition
MySQL 5.7 RDS High-availability Edition、RDS Enterprise Edition
MySQL 5.6 RDS 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
任意の値: > 0 DAS は指定された値を使用します

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

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

  2. 次のいずれかのパスを使用して [自律型機能管理] パネルを開きます。

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

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

  3. [自律機能設定] タブで、自律サービスを有効にします。[最適化とスロットリング] タブをクリックし、[自動スロットリング] を選択して、スロットリングのトリガー条件を設定します。

    設定されたタイムウィンドウ内で条件が満たされると、DAS はインスタンスのモニタリングを開始します。スロットリング開始後も問題が解決しない場合、DAS は自動的にスロットリング操作をロールバックします。スロットリング期間が [最大スロットリング期間] の値を超えることはありません。
    パラメーター 説明
    CPU 使用率 > CPU 使用率のしきい値。70 以上の値を設定します。たとえば、CPU 使用率が 80% を超えたときにスロットリングをトリガーするには、80 と入力します。
    アクティブセッション数 > アクティブセッション数のしきい値。CPU 使用率と OR 関係で使用する場合は 16 以上、AND 関係で使用する場合は 2 以上に設定します。たとえば、アクティブセッションが 64 を超えたときにスロットリングをトリガーするには、64 と入力します。
    利用可能な時間範囲 自動 SQL スロットリングがアクティブになるタイムウィンドウ。
    最大スロットリング期間 単一のスロットリングイベントの最大期間。0 に設定すると、スロットリングはすぐにトリガーされますが、直後に無効になります。
    期間 > スロットリングがトリガーされる前に CPU とセッションの条件が持続する必要がある時間。たとえば、条件が 2 分以上続いた場合にのみスロットリングが有効になるようにするには、2 分と入力します。

    2

  4. [OK] をクリックします。

  5. (任意) [アラート設定] セクションで、アラートテンプレートを設定し、通知をサブスクライブして、スロットリングタスクの開始または停止時に通知を受け取るようにします。システムはアラートテンプレートを推奨し、関連する自律イベントのアラートルールを事前に入力します。画面の指示に従って設定を完了してください。

    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 スロットリング機能を無効にします