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

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

最終更新日:Jun 04, 2025

Database Autonomy Service (DAS) は、データベースアクセスリクエストの数と同時 SQL リクエストの数を制御する SQL スロットリング機能を提供します。 この機能は、データベースサービスの可用性を確保するのに役立ちます。 このトピックでは、SQL スロットリング機能の使用方法について説明します。

前提条件

SQL スロットリングを有効にするデータベースインスタンスは、次のデータベースエンジンのいずれかで実行されています。

  • ApsaraDB RDS for MySQL 5.6、5.7、および 8.0

  • ApsaraDB RDS for PostgreSQL 14 以降

  • PolarDB for MySQL 5.6、5.7、および 8.0

  • PolarDB-X 2.0

スロットリングメッセージ

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

正の整数

ApsaraDB RDS for MySQL 5.7 (リビジョンバージョンが 20200630 以降)

5041

Concurrency control waiting count exceed max waiting count

説明

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

ApsaraDB RDS for MySQL 8.0

7534

PolarDB for MySQL 5.7

3277

PolarDB for MySQL 8.0

7533

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

7534

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

  • 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 文の動作を制御できます。 ccl_mode パラメーターの有効な値:

    • 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 8.0 (リビジョンバージョンが 20230630 以降)

  • ApsaraDB RDS for PostgreSQL 14 以降 (リビジョンバージョンが 20230330 以降)

  • PolarDB for MySQL:

    • PolarDB for MySQL 8.0.1 (リビジョンバージョンが 8.0.1.1.31 以降)

    • PolarDB for MySQL 8.0.2 (リビジョンバージョンが 8.0.2.2.12 以降)

指定された ID の SQL テンプレートを使用する SQL 文をスロットリングします。 SQL テンプレート ID は、SQL ログ、セッション、および EXPLAIN 文の実行後に返される結果から取得できます。

説明

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

PolarDB-X 2.0 Enterprise Edition

[実行時間によるスロットリング]

実行時間によって SQL 文をスロットリングします。 指定されたタイプの SQL 文の実行時間が指定されたしきい値を超えると、システムは SQL 文で使用されている SQL テンプレートの ID を取得し、その ID をスロットリングルールに追加します。 その後、SQL テンプレートを使用する SQL 文は、指定された同時実行数で実行されます。

説明

SQL テンプレート ID の最大数を設定できます。 スロットリングルールに追加された SQL テンプレート ID の数が上限に達すると、システムは SQL テンプレート ID の取得を停止します。

PolarDB-X 2.0 Enterprise Edition

手順

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

  2. 左側のナビゲーションウィンドウで、[インテリジェント O&M センター] > インスタンスモニター を選択します。

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

  4. 左側のナビゲーションウィンドウで、インスタンスセッション をクリックします。

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

  6. 表示されたパネルで、[スロットリングルールを作成] をクリックします。

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

  8. ApsaraDB RDS for MySQL

    パラメーター

    説明

    [スロットリングモード]

    SQL 文のスロットリングに使用するモード。 ビジネス要件に基づいて スロットリングモード を選択します。

    [SQL タイプ]

    スロットリングする SQL 文のタイプ。 有効な値: [SELECT][UPDATE][DELETE]、および [INSERT]

    説明
    • [スロットリングモード][キーワードによるスロットリング] に設定されている場合、このパラメーターは必須です。

    • INSERT SQL 文は、次のデータベースエンジンのいずれかでスロットリングできます。

      • ApsaraDB RDS for MySQL 8.0

      • PolarDB for MySQL 5.7 および 8.0

      • PolarDB-X 2.0

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

    データベース

    SQL 文がスロットルされるデータベース。

    説明

    このパラメーターは、[スロットリングモード][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 サンプルを最適化します。そのため、最適化後も速度制限の効果に影響はありません。

      たとえば、SQL サンプル select name from das where name = 'das' and age = 21 limit 20 を入力すると、DAS はそれを SQL テンプレート select name from das where name = ? and age = ? limit ? に変換し、さらにテンプレートを select name from das where name = 'param0' and age = 'param1' limit 20 に書き換えます。

    ApsaraDB RDS for PostgreSQL

    パラメーター

    説明

    スロットリングモード

    SQL 文をスロットルするために使用するモード。SQL テンプレートによるスロットルのみがサポートされています

    データベース

    SQL 文がスロットルされるデータベース。

    検索パス

    SQL スロットリングを実行する検索パス。

    説明

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

    最大同時実行数

    同時実行される SQL 文の最大数。このパラメーターの最小値は 0 です。

    説明

    スロットリングポリシーを満たす同時実行 SQL 文の数が最大同時実行数に達すると、スロットリングがトリガーされます。

    最大待機クエリ数

    待機中の SQL 文の最大数。

    スロットリング期間

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

    重要

    スロットリング機能は緊急時の使用のみを目的としています。ビジネス要件に基づいてスロットリング期間を指定し、不要になった場合はスロットリングを無効にすることをお勧めします。

    SQL サンプル

    スロットルする SQL 文のサンプル。

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

    • 複雑な SQL 文の場合、DAS は SQL テンプレート構造を変更せずに SQL サンプルを最適化します。したがって、最適化後もスロットリング効果は影響を受けません。

      たとえば、SQL サンプル select name from das where name = 'das' and age = 21 limit 20 を入力すると、DAS はそれを SQL テンプレート select name from das where name = ? and age = ? limit ? に変換し、さらにテンプレートを select name from das where name = 'param0' and age = 'param1' limit 20 に書き換えます。

    PolarDB for MySQL

    パラメーター

    説明

    スロットリングモード

    SQL 文をスロットルするために使用するモード。ビジネス要件に基づいて スロットリングモード を選択します。

    SQL タイプ

    スロットルする SQL 文のタイプ。有効な値: SELECTUPDATEDELETE、および INSERT

    説明
    • INSERT SQL 文は、次のデータベースエンジンのいずれかでスロットルできます。

      • ApsaraDB RDS for MySQL 8.0

      • PolarDB for MySQL 5.7 および 8.0

      • PolarDB-X 2.0

    • INSERT...SELECT... 形式の SQL 文はスロットルできません。

    最大同時実行数

    同時実行される SQL 文の最大数。このパラメーターの最小値は 0 です。

    説明

    スロットリングポリシーを満たし、同時に実行される SQL 文の数が最大同時実行数に達すると、スロットリングがトリガーされます。

    データベース

    SQL 文がスロットルされるデータベース。

    説明

    [スロットリングモード][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 サンプルを最適化します。したがって、最適化後もスロットリング効果は影響を受けません。

      たとえば、SQL サンプル select name from das where name = 'das' and age = 21 limit 20 を入力すると、DAS はそれを SQL テンプレート 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

    パラメーター

    説明

    スロットリングモード

    SQL 文をスロットルするために使用するモード。ビジネス要件に基づいて スロットリングモード を選択します。

    SQL タイプ

    スロットルする SQL 文のタイプ。有効な値: SELECT, UPDATE, DELETE, and INSERT

    説明
    • INSERT SQL 文は、次のデータベースエンジンのいずれかでスロットルできます。

      • ApsaraDB RDS for MySQL 8.0

      • PolarDB for MySQL 5.7 および 8.0

      • PolarDB-X 2.0

    • INSERT...SELECT... 形式の 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 テンプレート ID

    スロットルする SQL 文で使用される SQL テンプレートの ID。複数の ID はコンマ (,) で区切ります。

    説明

    データベースエンジンが PolarDB-X Enterprise Edition で、スロットリングモードSQL テンプレートによるスロットル に設定されている場合、このパラメーターは必須です。

    SQL の最小実行時間

    SQL 実行時間のしきい値。SQL 文の実行時間がこのしきい値を超えると、DAS はこの SQL 文が属する SQL テンプレートの ID をスロットリングルールに追加します。

    説明

    インスタンスが PolarDB-X Enterprise Edition インスタンスで、スロットリングモード実行時間によるスロットル に設定されている場合、このパラメーターは必須です。

    スロットルされる SQL ID の最大数

    実行時間によってスロットルできる SQL テンプレート ID の最大数。このしきい値に達すると、DAS は実行時間のしきい値に達した他の SQL 文のスロットリングルールの作成を停止します。

    説明

    インスタンスが PolarDB-X Enterprise Edition インスタンスで、スロットリングモード実行時間によるスロットル に設定されている場合、このパラメーターは必須です。

    クエリがスロットルされたデータベースアカウント

    スロットルされた SQL が属するデータベースアカウント。

    説明

    スロットリングモードキーワードによるスロットル または SQL テンプレートによるスロットル に設定されている場合、このパラメーターは必須です。

  9. [送信] をクリックします。

    SQL 速度制限ルールが作成されると、[実行中] タブでルールに関する情報を表示できます。次の表にパラメーターを示します。

    説明

    パラメーターは、データベースエンジンと速度制限モードによって若干異なる場合があります。

    パラメーター

    説明

    速度制限モード

    SQL 文を制限するために使用するモード。

    速度制限ルール

    • キーワードによる制限: 設定された速度制限キーワード。

    • SQL テンプレートによる制限: 制限されるサンプルに対応するテンプレート ID。

    • 実行時間による制限: 設定された実行時間のしきい値と、テンプレートによって制限される SQL 文の数。

    最大同時実行数

    同時実行される SQL 文の最大数。

    最大待機クエリ数

    速度制限ルールで設定された待機中の SQL 文の最大数。

    説明

    このパラメーターは、データベースインスタンスが ApsaraDB RDS for PostgreSQL で、速度制限モードSQL テンプレートによる制限 に設定されている場合に表示されます。

    速度制限時間 (分)

    SQL 速度制限ルールが有効になる期間。

    開始時間

    速度制限ルールが有効になる時間。

    残り時間 (秒)

    速度制限ルールの有効期限が切れるまでの残り時間。

    サンプル SQL

    制限する SQL 文のサンプル。

    説明

    このパラメーターは、速度制限モードSQL テンプレートによる制限 に設定されている場合に表示されます。

    速度制限テンプレート ID

    制限する SQL 文のサンプルで使用される SQL テンプレートの ID。

    説明

    このパラメーターは、速度制限モードSQL テンプレートによる制限 に設定されている場合に表示されます。

    ステータス

    有効になっている速度制限ルールの実行ステータス。

    データベース

    SQL 文が制限されるデータベース。

    説明

    このパラメーターは、速度制限モードSQL テンプレートによる制限 に設定されている場合に表示されます。

    検索パス

    SQL 速度制限を実行するための検索パス。

    説明

    このパラメーターは、データベースインスタンスが ApsaraDB RDS for PostgreSQL で、速度制限モードSQL テンプレートによる制限 に設定されている場合に表示されます。

    一致した SQL クエリ

    速度制限ルールに一致した SQL 文の数。

    説明

    このパラメーターは、速度制限モードSQL テンプレートによる制限 に設定されている場合に表示されます。

    待機中の SQL クエリ

    速度制限ルールで待機中の SQL 文の数。

    説明

    このパラメーターは、速度制限モードSQL テンプレートによる制限 に設定されている場合に表示されます。

    アクション

    速度制限ルールを 無効にする変更する 操作。

参考文献

関連 API 操作

API 操作

説明

EnableSqlConcurrencyControl

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

DisableSqlConcurrencyControl

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

DisableAllSqlConcurrencyControlRules

有効になっているすべてのスロットリングルールを無効にします。

GetRunningSqlConcurrencyControlRules

有効になっているスロットリングルールを照会します。

GetSqlConcurrencyControlRulesHistory

有効になっているか、トリガーされたスロットリングルールを照会します。

GetSqlConcurrencyControlKeywordsFromSqlText

SQL 文のスロットリングキーワードを生成します。