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

ApsaraDB RDS:自動SQLスロットリング機能の使用

最終更新日:Jan 22, 2024

予期しないトラフィックの急増によりSQL文の同時実行数が大幅に増加した場合、一部のSQL文が大量のデータベースリソースを消費した場合、またはインデックスのないSQL文が大量に実行された場合、SQL文の同時実行を制限してビジネスの安定性を確保する必要があります。 Database Autonomy Service (DAS) は、自動 SQL スロットリング機能を提供します。 この機能は、SQLステートメントの特性を自動的に抽出し、問題のあるSQLステートメントをキーワードでスロットルします。

前提条件

RDSインスタンスは、次のMySQLバージョンとRDSエディションのいずれかを実行します。

  • RDS High-availability EditionまたはRDS Enterprise EditionのMySQL 8.0

  • RDS High-availability EditionまたはRDS Enterprise EditionのMySQL 5.7

  • RDS High-availability EditionのMySQL 5.6

シナリオ

自動 SQL スロットリング機能は、次のシナリオに適しています。

  • トラフィック: キャッシュ侵入例外または疑わしい要求により、特定のタイプの同時SQLクエリが急増します。

  • データ: 多数のSQLクエリが同じソースから送信されます。 例えば、オンライン・ショッピング・プラットフォームのユーザは、多数の注文を出す。 この場合、ユーザーアカウントに関連する多数のSQLクエリが送信されます。 SQLクエリは、インスタンス上の大量のデータベースリソースを消費します。

  • SQL文: インデックスが作成されていない多数のSQL文が実行されます。 これはワークロードに影響します。

制限事項

自動SQLスロットリングのスロットリングモードは、Throttled by Keywordsです。

  • SELECTUPDATEDELETEINSERTのSQL文を調整できます。

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

  • MySQL 8.0を実行するApsaraDB RDS for MySQLインスタンスと、MySQL 5.7または8.0を実行するPolarDB for MySQLクラスターのみが、INSERTタイプのSQL文をスロットルできます。

機能の説明

自動SQLスロットリング機能を有効にすると、すべてのSQLキーワードを含むSQL文に対して異なる種類のデータベースサービスが異なる応答をします。

  • RDSインスタンスがMySQL 5.6またはMySQL 5.7を実行している場合、1317: "query execution was interrupted" エラーが返されます。

  • RDSインスタンスがMySQL 8.0を実行している場合、システムは関連するSQL文を同時実行コントロール待機状態のままにすることができます。 関連するSQL文の数がccl_max_waiting_countパラメーターの値を超えると、ERROR 7534 (HY000): "Concurrency control waiting count exceeds max waiting count" エラーが返されます。 ccl_max_waiting_countパラメーターは、異なるデータベースエンジンバージョンを実行するRDSインスタンスでは使用できない場合があります。

    ccl_max_waiting_countパラメーターがデフォルト値0に設定されている場合、すべてのスロットリングされたSQL文は同時実行制御待機状態になり、エラーは返されません。 DASを使用してSQLスロットリングを実装し、ccl_max_waiting_countパラメーターを0に設定すると、DASはこのパラメーターの値をDASで定義されたデフォルト値に変更します。 ccl_max_waiting_countパラメーターを0より大きい値に設定した場合、DASは指定した値を使用してSQLスロットリングを実装します。

手順

  1. [インスタンス] ページに移動します。 上部のナビゲーションバーで、RDSインスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
  2. 次のいずれかの方法を使用して、 Autonomous Function Managementパネルに移動します。

    • 左側のナビゲーションウィンドウで、自律型サービス (CloudDBA) > ワンクリック診断 を選択します。 表示されるページで、自律型センター タブをクリックします。 自律型センター タブで、Autonomy Service Settings をクリックします。

    • 左側のナビゲーションウィンドウで、自律型サービス (CloudDBA) > パフォーマンスの傾向 を選択します。 表示されるページの パフォーマンスのトレンド タブで、Autonomy Service Settings をクリックします。

  3. Autonomous Function Management パネルの Autonomous Function Settings タブで、自律サービスを有効にします。 最適化とスロットリング タブで、自動スロットリング を選択し、次のパラメーターを設定して、自動スロットリングをトリガーする条件を指定します。

  4. 2

    パラメーター

    説明

    CPU 使用率 >

    CPU使用率のしきい値。 パラメーターを70以上の値に設定します。

    アクティブセッション数 >

    アクティブなセッション数のしきい値。

    • このパラメーターがCPU使用率パラメーターとのOR関係を使用する場合は、このパラメーターに16以上の値を指定します。

    • このパラメーターがCPU使用率パラメーターとのAND関係を使用する場合は、このパラメーターに2以上の値を指定します。

    Available Time Range

    自動SQLスロットリングが実行される期間。

    Maximum Throttling Duration

    SQLスロットリングの最大期間。

    Maximum Throttling Durationパラメーターを0に設定した場合、データベースインスタンスが指定した条件を満たすと、自動SQLスロットリングがトリガーされます。 ただし、自動SQLスロットリングはすぐに無効になります。

    期間 >

    期間のしきい値。 CPU使用率およびアクティブセッション数パラメーターの値が指定された条件を満たす期間がこのパラメーターの値を超えると、自動SQLスロットリングがトリガーされます。

    説明

    たとえば、次の条件を指定できます。CPU使用率が80% を超え、アクティブなセッションの数が64を超え、異常状態が2分を超えた場合。 指定されたスロットリングウィンドウ内でこれらの条件が満たされると、自動SQLスロットリングがトリガーされ、システムはRDSインスタンスのパフォーマンスの監視を開始します。

    • スロットリング後に問題が解決しない場合、システムは自動SQLスロットリング操作を自動的にロールバックします。

    • 自動SQLスロットリングの期間は、指定された最大スロットリング期間を超えません。

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

    左側のナビゲーションウィンドウで ワンクリック診断 をクリックした後に表示される セッション管理 タブで自動的にトリガーされるSQLスロットリングを表示できます。 詳細については、「自動SQLスロットリングの履歴の表示」をご参照ください。

  6. オプションです。 Event Subscription Settings タブをクリックして、自動SQLスロットリングイベントの通知を設定します。

    自動SQLスロットリングがトリガーされると、DASに対して警告イベントが生成されます。 イベントの通知を受信するには、[サブスクリプションサービスの有効化] をオンにし、関連するパラメーターを設定します。 詳細については、「イベントサブスクリプション機能の使用」をご参照ください。

自動SQLスロットリングの履歴を表示する

  1. [インスタンス] ページに移動します。 上部のナビゲーションバーで、RDSインスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
  2. 左側のナビゲーションウィンドウで、自律型サービス (CloudDBA) > ワンクリック診断 を選択します。

  3. セッション管理 タブをクリックします。

  4. [インスタンスのセッション] セクションで、ビジネス要件に基づいて次の操作を実行します。

    SQL限流

    • SQL スロットリング をクリックします。 表示されるダイアログボックスで、次の操作を実行します。

      • [実行] タブをクリックして、実行中のスロットリングルールを表示します。

      • [完了] タブをクリックし、時間範囲を選択して、指定した時間範囲内のスロットル履歴を表示します。

      SQL限流

    • 自動SQLスロットリングのパラメーターを設定するときに、実行中の異常な SQL 文を強制終了 を選択した場合、セッション履歴の終了 をクリックしてセッションの履歴を表示できます。

参考情報

  • SQL文を最適化して、データベースのパフォーマンスを向上させ、クエリ効率を向上させ、リソース消費を削減できます。

  • RDSインスタンスのCPU使用率またはアクティブセッション数がしきい値に達しておらず、自動SQLスロットリングをトリガーできない場合、SQL文をスロットルするルールを設定できます。 詳細については、「SQLスロットリング」をご参照ください。

関連する操作

操作

説明

UpdateAutoThrottleRulesAsync

一度に複数のデータベースインスタンスの自動SQLスロットリングのパラメーターを非同期的に指定します。

GetAutoThrottleRules

データベースインスタンスの自動SQLスロットリングルールを照会します。

DisableAutoThrottleRules

複数のデータベースインスタンスの自動SQLスロットリング機能を同時に無効にします。