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

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

最終更新日:Nov 09, 2025

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。

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

SQL スロットリングルールを作成した後、アプリケーションが指定されたすべてのキーワードを含むか、テンプレートに一致する SQL 文を実行すると、スロットリングがトリガーされたときにデータベースシステムがメッセージを返します。返されるメッセージは、インスタンスのバージョンによって異なります。

最大同時実行数

インスタンスバージョン

エラーコード

エラーメッセージ

0 または正の整数

  • ApsaraDB RDS for MySQL 5.6

  • マイナーエンジンバージョンが 20200630 より前の ApsaraDB RDS for MySQL 5.7

  • PolarDB for MySQL 5.6

1317

query execution was interrupted

正の整数

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

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

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

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 は設定された値を使用します。

  • マイナーエンジンバージョンが 20200630 以降の ApsaraDB RDS for MySQL 5.7 インスタンスおよび 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 文がスロットリングされます。

  • マイナーエンジンバージョンが 20230630 以降の ApsaraDB RDS for MySQL 8.0。

  • ApsaraDB RDS for PostgreSQL:

    • マイナーエンジンバージョンが 20250430 以降のバージョン 13。

    • マイナーエンジンバージョンが 20230330 以降のバージョン 14。

    • マイナーエンジンバージョンが 20230330 以降のバージョン 15。

    • 15 より後のバージョン。

  • PolarDB for MySQL:

    • マイナーエンジンバージョンが 8.0.1.1.31 以降のバージョン 8.0.1。

    • マイナーエンジンバージョンが 8.0.2.2.12 以降のバージョン 8.0.2。

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

説明

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

PolarDB-X 2.0 Enterprise Edition

実行時間スロットリング

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

説明

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

PolarDB-X 2.0 Enterprise Edition

手順

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

  2. 左側のナビゲーションウィンドウで、[オペレーションセンター] > [インスタンスモニタリング] をクリックします。

  3. ターゲットインスタンスを見つけ、インスタンス ID をクリックして、インスタンス詳細ページに移動します。

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

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

  6. 表示されるダイアログボックスで、[スロットリングルールの作成] をクリックします。

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

  8. ApsaraDB RDS for MySQL

    パラメーター

    説明

    スロットリングモード

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

    SQL タイプ

    SQL 文のタイプを選択します。有効な値: SELECTUPDATEDELETE、および INSERT

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

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

      • ApsaraDB RDS for MySQL 8.0

      • PolarDB for MySQL 5.7 および 8.0

      • PolarDB-X 2.0

    • INSERT...SELECT... 文はスロットリングできません。

    データベース

    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 テンプレートは変更しません。スロットリングの効果は最適化の影響を受けません。

      たとえば、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 に書き換えられます。

    ApsaraDB RDS for PostgreSQL

    パラメーター

    説明

    スロットリングモード

    ApsaraDB RDS for PostgreSQLSQL テンプレートスロットリングのみをサポートします。

    データベース

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

    検索パス

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

    説明

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

    最大同時実行数

    同時実行 SQL 文の最大数。最小値は 0 です。

    説明

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

    最大待機数

    待機中の文の最大数。

    スロットリング期間

    SQL スロットリングルールの有効期間。

    重要

    SQL スロットリングは緊急措置です。必要に応じて期間を設定し、不要になったらルールを無効にしてください。

    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 に書き換えられます。

    PolarDB for MySQL

    パラメーター

    説明

    スロットリングモード

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

    SQL タイプ

    SQL 文のタイプを選択します。有効な値: SELECTUPDATEDELETE、および 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 スロットリングは緊急措置です。必要に応じて期間を設定し、不要になったらルールを無効にしてください。

    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 に書き換えられます。

    PolarDB-X 2.0

    パラメーター

    説明

    スロットリングモード

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

    SQL タイプ

    SQL 文のタイプを選択します。有効な値: SELECTUPDATEDELETE、および 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 文のキーワード。

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

    • 複数のキーワードを設定した場合、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 テンプレートの ID。ID は 8 文字の 16 進数文字列です。複数の SQL テンプレート ID はカンマ (,) で区切ります。

    説明

    このパラメーターは、インスタンスが PolarDB-X Enterprise Edition で、[スロットリングモード][SQL テンプレートスロットリング] に設定する場合に必要です。

    最小 SQL 実行時間

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

    説明

    このパラメーターは、インスタンスが PolarDB-X Enterprise Edition で、[スロットリングモード][実行時間スロットリング] に設定する場合に必要です。

    スロットリングされる SQL ID の最大数

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

    説明

    このパラメーターは、インスタンスが PolarDB-X Enterprise Edition で、[スロットリングモード][実行時間スロットリング] に設定する場合に必要です。

    スロットリングされた SQL のデータベースアカウント

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

    説明

    このパラメーターは、[スロットリングモード][キーワードスロットリング] または [SQL テンプレートスロットリング] に設定する場合に必要です。

  9. [送信] をクリックしてルールを作成します。

    SQL スロットリングルールが作成された後、[実行中] タブでルールに関する情報を表示できます。次の表にパラメーターを示します。

    説明

    パラメーターは、データベースエンジンとスロットリングモードによって若干異なります。

    パラメーター

    説明

    スロットリングモード

    選択したモード。

    スロットリングルール

    • キーワードスロットリング: スロットリングキーワードの構成。

    • SQL テンプレートスロットリング: スロットリングされたサンプルに対応するテンプレート ID。

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

    最大同時実行数

    同時実行 SQL 文の最大数。

    最大待機数

    スロットリングルールで設定された待機中の文の最大数。

    説明

    このパラメーターは、データベースインスタンスが ApsaraDB RDS for PostgreSQL で、[スロットリングモード][SQL テンプレートスロットリング] に設定されている場合に表示されます。

    スロットリング期間 (分)

    SQL スロットリングルールの有効期間。

    開始時間

    スロットリングルールが有効になるように設定された時間。

    残り時間

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

    スロットリングされた SQL サンプル

    スロットリングされた SQL サンプルの構成。

    説明

    このパラメーターは、[スロットリングモード][SQL テンプレートスロットリング] に設定した場合に表示されます。

    スロットリングテンプレート ID

    スロットリングされた 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 文からスロットリングキーワードを生成します。