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

Database Autonomy Service:SQL スロットリング

最終更新日:Aug 28, 2026

Database Autonomy Service (DAS) は、サービスの可用性を確保するために、データベースへのアクセスリクエスト量と SQL の同時実行数をコントロールする SQL スロットリング機能を提供します。

前提条件

サポート対象のデータベースエンジンは次のとおりです。

  • ApsaraDB RDS for MySQL 5.6、5.7、8.0。

  • ApsaraDB RDS for PostgreSQL 13 以降。

    説明
    • PostgreSQL 13 の場合、マイナーエンジンバージョン は 20250430 以降である必要があります。

    • PostgreSQL 14 または 15 の場合、マイナーエンジンバージョンは 20230330 以降である必要があります。

    • PostgreSQL 15 よりも後のバージョンでは、すべてのマイナーエンジンバージョンがサポートされます。

  • PolarDB for MySQL 5.6、5.7、8.0。

  • PolarDB-X 2.0。

  • MongoDB。

スロットリングのエラーメッセージ

SQL スロットリングルールを作成した後、アプリケーションがそのルールのキーワードまたはテンプレートに一致する SQL ステートメントを実行すると、データベースシステムから特定のエラーメッセージが返されます。

最大同時実行数

インスタンスバージョン

エラーコード

エラーメッセージ

0 または正の整数

  • ApsaraDB RDS for MySQL 5.6

  • ApsaraDB RDS for MySQL 5.7 (マイナーエンジンバージョンが 20200630 未満)

  • PolarDB for MySQL 5.6

1317

query execution was interrupted

MongoDB

56900

Sql controlled, skipped!

正の整数

ApsaraDB RDS for MySQL 5.7 (マイナーエンジンバージョン 20200630 以降)

5041

Concurrency control waiting count exceed max waiting count

説明

最大同時実行数は正の整数であり、関連する SQL クエリは、待機数が ccl_max_waiting_count パラメーターの値 (インスタンスのバージョンがこのパラメーターをサポートしている場合) を超えるまで Concurrency control waiting 状態になり、その時点でプロンプトが返されます。

ApsaraDB RDS for MySQL 8.0

7534

PolarDB for MySQL 5.7

3277

PolarDB for MySQL 8.0

7532

0

ApsaraDB RDS for MySQL 5.7 (マイナーエンジンバージョン 20200630 以降)

5042

Concurrency control refuse to execute query

説明

最大同時実行数が 0 の場合、エラーがすぐに返されます。

ApsaraDB RDS for MySQL 8.0

7535

PolarDB for MySQL 5.7

3278

PolarDB for MySQL 8.0

7533

説明
  • DAS が SQL スロットリングを実行する際、ccl_max_waiting_count パラメーターが 0 に設定されている場合、DAS はデフォルト値の 10 を使用します。パラメーターが 0 より大きい値に設定されている場合は、指定された値を使用します。

  • ApsaraDB RDS for MySQL 5.7 (マイナーバージョン 20200630 以降) および ApsaraDB RDS for MySQL 8.0 インスタンスでは、ccl_wait_timeout パラメーターが設定されており (かつインスタンスのバージョンでサポートされている) 場合、Concurrency control waiting 状態の SQL ステートメントは、この制限時間を超えると実行が継続され、スロットリングされなくなります。

  • PolarDB for MySQL 8.0 インスタンスでは、ccl_mode パラメーターを設定して、同時実行数の上限を超えた場合の SQL ステートメントの動作を制御できます。このパラメーターは、サポートされているインスタンスバージョンでのみ使用できます。

    • WAIT (デフォルト): ステートメントはキューで待機します。

    • REFUSE: ステートメントは待機せず、すぐにエラーが返されます。

シナリオ

シナリオ

説明

SQL の同時実行数の急増

キャッシュペネトレーションや異常な呼び出しにより、SQL の同時実行数が急増することがあります。

データスキューを伴う SQL クエリ

セールスプロモーション期間中にホットデータを頻繁にクエリすると、システムに過負荷がかかることがあります。

インデックスの欠落

インデックスが作成されていないテーブルに対して大量の SQL 呼び出しが発生すると、システムに過負荷がかかることがあります。

スロットリングモード

モード

説明

対応データベース

[キーワードスロットリング]

指定されたキーワードを含む SQL ステートメントをスロットリングします。

説明

このモードでは、特定の SQL ステートメントをスロットリングすることはできません。

  • ApsaraDB RDS for MySQL

  • PolarDB for MySQL

  • PolarDB-X 2.0

[SQLテンプレートの調整]

SQL サンプルを入力します。システムはそれを SQL テンプレートに処理し、一致するすべての SQL ステートメントをスロットリングします。

  • ApsaraDB RDS for MySQL:

    • バージョン 5.7 (マイナーエンジンバージョン 20241231 以降)

    • バージョン 8.0 (マイナーエンジンバージョン 20230630 以降)

  • ApsaraDB RDS for PostgreSQL:

    • バージョン 13 (マイナーエンジンバージョン 20250430 以降)

    • バージョン 14 (マイナーエンジンバージョン 20230330 以降)

    • バージョン 15 (マイナーエンジンバージョン 20230330 以降)

    • バージョン 15 以降

  • PolarDB for MySQL:

    • バージョン 8.0.1 (マイナーエンジンバージョン 8.0.1.1.31 以降)

    • バージョン 8.0.2 (マイナーエンジンバージョン 8.0.2.2.12 以降)

SQL テンプレート ID を照合して SQL ステートメントをスロットリングします。SQL テンプレート ID は、SQL ログ、セッション、および EXPLAIN 実行結果から取得できます。

説明

SQL テンプレート ID は、8 文字の 16 進数文字列です。

PolarDB-X 2.0 Enterprise Edition

[時間のかかる電流制限を実行する]

SQL ステートメントの実行時間が指定されたしきい値を超えると、その SQL テンプレート ID が自動的にスロットリングルールに追加されます。その後、この ID に一致するステートメントは、ルールで指定された同時実行数に基づいて実行されます。

説明

スロットリングされる SQL テンプレート ID の数に制限を設定することもできます。制限に達すると、他の SQL ステートメントに対してはそれ以上スロットリングルールは作成されません。

PolarDB-X 2.0 Enterprise Edition

[操作タイプのリミット設定]

指定されたコレクションに対する find、insert、update、delete 操作の同時実行数を制御します。

MongoDB

  • バージョン 5.0 (マイナーエンジンバージョン 6.0.13 以降)

  • バージョン 6.0 (マイナーエンジンバージョン 7.0.9 以降)

  • バージョン 7.0 (マイナーエンジンバージョン 8.0.4 以降)

  • バージョン 8.0 (マイナーエンジンバージョン 9.0.5 を除く)

手順

このトピックでは、ApsaraDB RDS for MySQL を例に、スロットリング機能の使用方法を説明します。他のデータベースタイプでの関連操作については、「関連ドキュメント」をご参照ください。

  1. にログインします。DASコンソール.

  2. 左側のナビゲーションウィンドウで、インスタンスモニター.

  3. 表示されるページで、管理するデータベースインスタンスを見つけ、インスタンスIDをクリックします。 インスタンス詳細ページが表示されます。

  4. ナビゲーションペインで、インスタンスセッション をクリックします。

  5. セッション管理 ページで、SQL スロットリング をクリックします。

  6. ダイアログボックスで、スロットルルールの作成 をクリックします。

  7. スロットルルールの作成 ダイアログボックスで、データベースエンジンに基づいて次のパラメーターを設定します。

  8. RDS for MySQL

    パラメーター

    説明

    [Throttling Mode]

    必要に応じて スロットリングモード を選択します。

    [SQL Type]

    SQL ステートメントのタイプ。有効な値: [SELECT]、[UPDATE]、[DELETE]、および [INSERT]。

    説明
    • [Throttling Mode] を [キーワードによるスロットリング] に設定した場合、このパラメーターは必須です。

    • 次のデータベースエンジンでは、INSERT ステートメントをスロットリングできます。

      • ApsaraDB RDS for MySQL 8.0

      • PolarDB for MySQL 5.7 および 8.0

      • PolarDB-X 2.0

    • INSERT...SELECT... ステートメントをスロットリングすることはできません。

    [データベース]

    SQL ステートメントのスロットリング対象となるデータベース。

    説明

    [Throttling Mode] を [SQLテンプレートの調整] に設定した場合、このパラメーターは必須です。

    [最大同時実行性]

    同時 SQL ステートメントの最大数。最小値は 0 です。

    説明

    ルールに一致する SQL ステートメントの同時実行数がこの値に達すると、スロットリングが開始されます。

    [スロットリングの期間]

    SQL スロットリングルールが有効な期間です。

    重要

    SQL スロットリングは緊急措置です。ビジネス要件に基づいて期間を設定し、不要になったらルールを無効にすることを推奨します。

    [SQL キーワード]

    スロットリングする SQL ステートメントに含まれるキーワード。

    説明
    • スロットリングモード を キーワードによるスロットリング に設定した場合、このパラメーターは必須です。

    • 複数のキーワードを指定した場合、SQL ステートメントに指定したキーワードが すべて 含まれている場合にのみ、スロットリングルールがトリガーされます。複数のキーワードはチルダ (~) で区切ります。キーワードの順序は問いません。

      例:元のステートメントが SELECT min(id), max(id) FROM task_event WHERE gmt_modified < '2020-06-21' AND begin_time > '2020-07-09' AND source IN (527) AND id >= 15673 AND id <= 8015673  の場合、

      対応するスロットリングキーワードは SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~id です。

    • スロットリングキーワードとして SELECT, INSERT, UPDATE, DELETE のみを指定することはできません。キーワードでは大文字と小文字が区別されます。ただし、一部の古いバージョンのインスタンスでは、大文字と小文字は区別されません。

    [SQL サンプル]

    スロットリングする SQL ステートメントの例。

    説明
    • スロットリングモード を SQL テンプレートによるスロットリング に設定した場合、このパラメーターは必須です。

    • 複雑な SQL ステートメントの場合、DAS は内部処理のために SQL サンプルを変換しますが、最終的な SQL テンプレートは変わりません。この変換はスロットリングの効果に影響しません。

      例:select name from das where name = `das` and age = 21 limit 20 を入力すると、

      select name from das where name = ? and age = ? limit ? にテンプレート化され、

      その後 select name from das where name = `param0` and age = `param1` limit 20 に書き換えられます。

    RDS for PostgreSQL

    パラメーター

    説明

    [Throttling Mode]

    ApsaraDB RDS for PostgreSQL では、SQL テンプレートによるスロットリング のみがサポートされています。

    [データベース]

    SQL ステートメントのスロットリング対象となるデータベース。

    [検索パス]

    SQL スロットリングの検索パス。

    説明

    複数のパスは、コンマ (,) で区切ります。デフォルト値は information_schema,public です。

    [最大同時実行性]

    同時 SQL ステートメントの最大数。最小値は 0 です。

    説明

    ルールに一致する SQL ステートメントの同時実行数がこの値に達すると、スロットリングが開始されます。

    [最大待機数]

    待機クエリの最大数。

    [スロットリングの期間]

    SQL スロットリングルールが有効な期間です。

    重要

    SQL スロットリングは緊急措置です。ビジネス要件に基づいて期間を設定し、不要になったらルールを無効にすることを推奨します。

    [SQL サンプル]

    スロットリングする SQL ステートメントの例。

    説明
    • [Throttling Mode] を [SQLテンプレートの調整] に設定した場合、このパラメーターは必須です。

    • 複雑な SQL ステートメントの場合、DAS は内部処理のために SQL サンプルを変換しますが、最終的な SQL テンプレートは変わりません。この変換はスロットリングの効果に影響しません。

      例:select name from das where name = "das" and age = 21 limit 20 を入力すると、

      select name from das where name = ? and age = ? limit ? にテンプレート化され、

      その後 select name from das where name = "param0" and age = "param1" limit 20 に書き換えられます。

    PolarDB for MySQL

    パラメーター

    説明

    [Throttling Mode]

    必要に応じて スロットリングモード を選択します。

    [SQL Type]

    SQL ステートメントの種類。有効な値は SELECT、UPDATE、DELETE、INSERT です。

    説明
    • INSERT ステートメントは、以下のデータベースエンジンでのみスロットリングできます:

      • ApsaraDB RDS for MySQL 8.0

      • PolarDB for MySQL 5.7 および 8.0

      • PolarDB-X 2.0

    • INSERT...SELECT... ステートメントをスロットリングすることはできません。

    [最大同時実行性]

    同時 SQL ステートメントの最大数。最小値は 0 です。

    説明

    ルールに一致する SQL ステートメントの同時実行数がこの値に達すると、スロットリングが開始されます。

    [データベース]

    SQL ステートメントのスロットリング対象となるデータベース。

    説明

    [Throttling Mode] を [SQLテンプレートの調整] に設定した場合、このパラメーターは必須です。

    [スロットリングの期間]

    SQL スロットリングルールが有効な期間です。

    重要

    SQL スロットリングは緊急措置です。ビジネス要件に基づいて期間を設定し、不要になったらルールを無効にすることを推奨します。

    [SQL キーワード]

    スロットリングする SQL ステートメントに含まれるキーワード。

    説明
    • [Throttling Mode] を [キーワードによるスロットリング] に設定した場合、このパラメーターは必須です。

    • 複数のキーワードを指定した場合、SQL ステートメントに指定したキーワードが すべて 含まれている場合にのみ、スロットリングルールがトリガーされます。複数のキーワードはチルダ (~) で区切ります。キーワードの順序は問いません。

      例:元のステートメントが SELECT min(id), max(id) FROM task_event WHERE gmt_modified < '2020-06-21' AND begin_time > '2020-07-09' AND source IN (527) AND id >= 15673 AND id <= 8015673  の場合、

      対応するスロットリングキーワードは SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~id です。

    • スロットリングキーワードとして、SELECT、INSERT、UPDATE、または DELETE のいずれか 1 つのみを指定することはできません。キーワードは大文字と小文字を区別します。ただし、一部の古いインスタンスバージョンでは大文字と小文字が区別されません。

    [SQL サンプル]

    スロットリングする SQL ステートメントの例。

    説明
    • [Throttling Mode] を [SQLテンプレートの調整] に設定した場合、このパラメーターは必須です。

    • 複雑な SQL ステートメントの場合、DAS は内部処理のために SQL サンプルを変換しますが、最終的な SQL テンプレートは変わりません。この変換はスロットリングの効果に影響しません。

      例:select name from das where name = "das" and age = 21 limit 20 を入力すると、

      select name from das where name = ? and age = ? limit ? にテンプレート化され、

      その後 select name from das where name = "param0" and age = "param1" limit 20 に書き換えられます。

    PolarDB-X 2.0

    パラメーター

    説明

    [Throttling Mode]

    必要に応じて スロットリングモード を選択します。

    [SQL Type]

    SQL ステートメントのタイプ。有効な値: SELECT、UPDATE、DELETE、および INSERT。

    説明
    • INSERT ステートメントは、以下のデータベースエンジンでのみスロットリングできます:

      • ApsaraDB RDS for MySQL 8.0

      • PolarDB for MySQL 5.7 および 8.0

      • PolarDB-X 2.0

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

    [最大同時実行性]

    同時 SQL ステートメントの最大数。最小値は 0 です。

    説明

    ルールに一致する SQL ステートメントの同時実行数がこの値に達すると、スロットリングが開始されます。

    [スロットリングの期間]

    SQL スロットリングルールが有効な期間です。

    重要

    SQL スロットリングは緊急措置です。ビジネス要件に基づいて期間を設定し、不要になったらルールを無効にすることを推奨します。

    [SQL キーワード]

    スロットリングする SQL ステートメントに含まれるキーワード。

    説明
    • [Throttling Mode] を [キーワードによるスロットリング] に設定した場合、このパラメーターは必須です。

    • 複数のキーワードを指定した場合、SQL ステートメントに指定したキーワードが すべて 含まれている場合にのみ、スロットリングルールがトリガーされます。複数のキーワードはチルダ (~) で区切ります。キーワードの順序は問いません。

      例:元のステートメントが SELECT min(id), max(id) FROM task_event WHERE gmt_modified < '2020-06-21' AND begin_time > '2020-07-09' AND source IN (527) AND id >= 15673 AND id <= 8015673  の場合、

      対応するスロットリングキーワードは SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~id です。

    • スロットリングキーワードとして、SELECT、INSERT、UPDATE、または DELETE のいずれか 1 つのみを指定することはできません。キーワードは大文字と小文字を区別します。ただし、一部の古いインスタンスバージョンでは大文字と小文字が区別されません。

    [SQL テンプレート ID]

    スロットリングする SQL テンプレートの ID。8 文字の 16 進数文字列です。複数の SQL テンプレート ID は、コンマ (,) で区切ります。

    説明

    [Throttling Mode] を [SQLテンプレートの調整] に設定した場合、PolarDB-X インスタンスではこのパラメーターが必須です。

    [最小 SQL 実行時間]

    SQL の実行時間に対するしきい値です。SQL ステートメントの実行時間が指定したしきい値を超えると、システムはその SQL ステートメントのテンプレート ID をスロットリングルールに追加します。

    説明

    [Throttling Mode] を [時間のかかる電流制限を実行する] に設定した場合、PolarDB-X インスタンスではこのパラメーターが必須です。

    [スロットリング対象クエリ数の最大値]

    実行時間に基づいてスロットリング可能な SQL テンプレート ID の最大数です。この上限に達すると、実行時間がしきい値を超えた他の SQL ステートメントに対しては、スロットリングルールが作成されなくなります。

    説明

    [Throttling Mode] を [時間のかかる電流制限を実行する] に設定した場合、PolarDB-X インスタンスではこのパラメーターが必須です。

    [スロットリング対象クエリが発生したデータベースアカウント]

    スロットリングする SQL ステートメントに関連付けられたデータベースアカウントです。

    説明

    [Throttling Mode] を [キーワードによるスロットリング] または [SQLテンプレートの調整] に設定した場合、このパラメーターは必須です。

    MongoDB

    パラメーター

    説明

    操作タイプ

    速度制限する操作タイプを選択します。複数のタイプを選択できます。有効な値:find、insert、update、delete。

    操作の同時実行数

    選択した操作タイプで許可される同時操作の最大数を指定します。このしきい値を超えたリクエストは速度制限されます。

    スロットリング持続時間

    スロットリングルールがアクティブである期間を設定します。ルールが有効期限切れになると、システムは自動的にルールを無効にし、終了 タブに移動します。

    Kill Statement

    (オプション) このオプションを有効にすると、スロットリングルールが有効になったときに、システムはルールに一致するアクティブな操作 (長時間実行されている find や update 操作など) を自動的に終了 (強制終了) します。システムはこの操作を一度だけ実行し、占有されている接続とコンピューティングリソースを即座に解放します。ルールがアクティブになった後に到着した新しいリクエストは速度制限され、終了されることはありません。この機能は、ワークロードの急増により多数の長時間トランザクションが蓄積され、リソースの即時解放が必要となる緊急事態に最適です。

    流量制御の範囲

    このオプションは、ApsaraDB for MongoDB シャードクラスターインスタンスでのみ利用可能です。ルールは All Shards または Partial Shards に適用できます。

    スロットリングされたコレクション

    ルールを適用するコレクションを指定します。databaseName.collectionName のフォーマットを使用します。

  9. 提出 をクリックします。

    SQL スロットリングルールを作成した後、操作中 タブで詳細を確認できます。次の表で、各パラメーターについて説明します。

    説明

    一覧に表示されるパラメーターは、データベースエンジンとスロットリングモードによって一部異なります。

    パラメーター

    説明

    [Throttling Mode]

    選択したモード。

    [現在の制限ルール]

    • [キーワード制限]:設定したスロットリングキーワード。

    • [SQLテンプレートの調整]:SQL サンプルに対応するテンプレート ID。

    • [時間のかかる電流制限を実行する]:設定した実行時間のしきい値と、スロットリング対象の SQL テンプレート数。

    [最大同時実行性]

    同時に実行される SQL ステートメントの最大数。

    [最大待機数]

    スロットリングルールで設定した待機クエリの最大数。

    説明

    [Throttling Mode]を[SQLテンプレートの調整]に設定した場合、このパラメーターは ApsaraDB RDS for PostgreSQL インスタンスに表示されます。

    [现在の制限时间 (分)]

    SQL スロットリングルールが有効である期間。

    [開始時間]

    スロットリングルールが設定され、有効になった時刻。

    [残り時間]

    スロットリングルールの有効期限が切れるまでの残り時間。

    [SQL サンプル]

    スロットリングされる SQL ステートメントの例。

    説明

    [Throttling Mode]を[SQLテンプレートの調整]に設定した場合、このパラメーターが表示されます。

    [フロー制限テンプレートID]

    SQL サンプルに対応するテンプレート ID。

    説明

    [Throttling Mode]を[SQLテンプレートの調整]に設定した場合、このパラメーターが表示されます。

    [ステータス]

    ルールが有効な状態。

    [データベース]

    SQL ステートメントがスロットリングされるデータベース。

    説明

    [Throttling Mode]を[SQLテンプレートの調整]に設定した場合、このパラメーターが表示されます。

    [検索パス]

    スロットリングされる SQL ステートメントに対応する検索パス。

    説明

    [Throttling Mode]を[SQLテンプレートの調整]に設定した場合、このパラメーターは ApsaraDB RDS for PostgreSQL インスタンスに表示されます。

    [一致するSQL量]

    スロットリングルールに一致した SQL クエリの数。

    説明

    [Throttling Mode]を[SQLテンプレートの調整]に設定した場合、このパラメーターが表示されます。

    [SQL待機中の数]

    スロットリングルールにより待機中となっている SQL クエリの数。

    説明

    [Throttling Mode]を[SQLテンプレートの調整]に設定した場合、このパラメーターが表示されます。

    [操作]

    ルールを閉じる または 変更 できます。

関連トピック

関連 API

API

説明

EnableSqlConcurrencyControl

SQL スロットリングを有効にします。

DisableSqlConcurrencyControl

指定したスロットリングルールを無効にします。

DisableAllSqlConcurrencyControlRules

実行中のスロットリングルールをすべて無効にします。

GetRunningSqlConcurrencyControlRules

実行中のスロットリングルールを返します。

GetSqlConcurrencyControlRulesHistory

実行中、またはトリガーされたスロットリングルールを返します。

GetSqlConcurrencyControlKeywordsFromSqlText

SQL ステートメントからスロットリングキーワードを生成します。