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

始める前に

SQL スロットリングは、次のデータベースエンジンにのみ適用できます。
  • ApsaraDB RDS for MySQL 5.6、5.7、8.0
  • PolarDB for MySQL 5.6、5.7、8.0

シナリオ

シナリオ 説明
特定のタイプの同時実行 SQL 文の急増 キャッシュの浸透または異常な呼び出しにより、同時実行 SQL 文の予期しない増加が生じる可能性があります。
データスキューが発生する SQL 文 セールスプロモーション中に大量のデータのクエリが実行されると、システム全体の速度が低下し、通常のサービスに影響が出ます。
インデックス未作成のテーブル インデックスが未作成の新しいデータベーステーブルで多数の SQL 文が実行されると、システム全体の速度が低下し、通常のサービスに影響が出ます。

手順

  1. [インスタンスセッション] ページにログインします。 詳細は、「インスタンスセッション」をご参照ください。
  2. [インスタンスセッション] ページで、[SQL スロットリング] をクリックします。
  3. [SQL スロットリング] ダイアログボックスで、左上隅にある [作成] をクリックします。
  4. [SQL スロットリングルールを設定] ダイアログボックスで、次の表で説明されているパラメーターを設定します。 [作成] をクリックします。
    項目 説明
    SQL タイプ SQL 文のタイプです。 有効値: [SELECT][UPDATE][DELETE]
    最大同時実行数 同時実行 SQL 文の最大数です。 スロットリングルールは、特定のキーワードを含む SQL 文の数がこのパラメーターに指定された値に到達するとトリガーされます。 有効な最小値は 1 です。
    スロットリング期間 SQL スロットリングルールが適用される期間です。 SQL スロットリングは緊急時に使用されます。 実際の要件に基づいてスロットリング期間を指定し、SQL スロットリングが不要なときは無効化することを推奨します。
    SQL キーワード スロットリングに使用される SQL キーワードです。 複数のキーワードを指定した場合、SQL スロットリングは、SQL 文に指定されたすべてのキーワードが含まれている場合にのみトリガーされます。 キーワードが複数ある場合はチルダ (~) で区切ります。 キーワードに SELECT、UPDATE、DELETE のみを含めることはできません。 インスタンスでは、キーワードの大文字と小文字が区別されます (以前のバージョンのインスタンスを除く)。 たとえば、元の文が 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 に設定します。
    SQL スロットリングルールが作成済みであると仮定します。 指定されたすべてのキーワードを含む SQL 文がクライアントから ApsaraDB RDS for MySQL 5.6 または 5.7 インスタンスまたは PolarDB for MySQL 5.6 または 5.7 クラスターに送信された場合、エラーが発生します。 この場合のエラーコードは 1317 で、エラーメッセージは「query execution was interrupted」です。 SQL 文は ApsaraDB RDS for MySQL 8.0 インスタンスまたは PolarDB for MySQL 8.0 クラスターに送信された場合、このエラーは発生せず、関連 SQL スロットリングルールは Concurrency control waiting ステータスになります。
  5. SQL スロットリングルールの作成後、SQL スロットリングルールのリストでルールのステータスを表示できます。
    指定されたスロットリング期間が切れる前に SQL スロットリングルールを変更または無効化する場合、[操作] 列で [閉じる] または [編集] をクリックします。