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

ApsaraDB RDS:スレッドプール

最終更新日:May 13, 2026

ApsaraDB for RDS のパフォーマンスを最大化するために、Alibaba Cloud はスレッドプールを提供しています。この機能は、スレッドをセッションから分離し、少数のスレッドで多数のアクティブセッションのタスクを処理できるようにします。

メリット

MySQL のデフォルトの接続モデルは、1 セッションあたり 1 スレッドです。多数のセッションが接続すると、このモデルは深刻なリソースの競合を引き起こす可能性があります。システムのスレッドスケジューリングや頻繁なキャッシュの無効化によるオーバーヘッドが、パフォーマンスの急激な低下を招くことがあります。

ApsaraDB for RDS のスレッドプールは、さまざまなタイプの SQL 操作に対して優先度と同時実行制御のメカニズムを実装しています。同時実行スレッドの数を最適なレベルに保ち、高同時実行ワークロードでも高いパフォーマンスを確保します。スレッドプールの主なメリットは次のとおりです:

  • 高同時実行下では、スレッドプールはアクティブスレッドの数を最適な範囲内に保ちます。これにより、過剰なスレッドスケジューリングとキャッシュの無効化を削減します。
  • 同時実行トランザクションに対して、スレッドプールは SQL ステートメントとトランザクションに異なる優先度を割り当て、それらの同時実行を制御することで、リソースの競合を削減します。
  • スレッドプールは管理用 SQL ステートメントを優先し、システム負荷が高い状況でも、新しい接続の作成、管理、監視などの操作が確実に実行されるようにします。
  • スレッドプールは複雑な SQL ステートメントに低い優先度を割り当て、最大同時実行数の制限を適用します。これにより、多数の複雑な SQL ステートメントがシステムリソースを枯渇させ、データベースサービスが利用できなくなるのを防ぎます。

前提条件

RDS インスタンスが MySQL 5.6、5.7、8.0、または 8.4 を実行していること。

スレッドプールのパラメーター

コンソールで以下の 3 つのパラメーターを使用してスレッドプールを設定できます。詳細については、「インスタンスパラメーターの設定」をご参照ください。

パラメーター 説明
loose_thread_pool_enabled スレッドプール機能を有効にするかどうかを指定します。有効値:
  • ON
  • OFF

デフォルト値: ON。

説明
  • このパラメーターを使用してスレッドプール機能を有効または無効にします。 thread_handling パラメーターはこの目的では使用されなくなりました。
  • スレッドプールを有効または無効にしても、インスタンスの再起動は不要です。
loose_thread_pool_size スレッドグループの数。デフォルト値: 4。プール内のスレッドは、管理のためにこれらのグループに均等に分散されます。
loose_thread_pool_oversubscribe 各スレッドグループで許可されるアクティブスレッドの数。デフォルト値: 32。アクティブスレッドとは、SQL ステートメントを実行しているスレッドのことですが、次のケースは除きます:
  • SQL ステートメントがディスク I/O を待機している。
  • SQL ステートメントがトランザクションのコミットを待機している。

スレッドプールのステータス

スレッドプールのステータスを確認するには、次のコマンドを実行します:
show status like "thread_pool%";

例:

mysql> show status like "thread_pool%";

+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| thread_pool_active_threads | 1     |
| thread_pool_big_threads    | 0     |
| thread_pool_dml_threads    | 0     |
| thread_pool_idle_threads   | 19    |
| thread_pool_qry_threads    | 0     |
| thread_pool_total_threads  | 20    |
| thread_pool_trx_threads    | 0     |
| thread_pool_wait_threads   | 0     |
+----------------------------+-------+
8 rows in set (0.00 sec)            

次の表で、各ステータス変数について説明します。

ステータス変数 説明
thread_pool_active_threads スレッドプール内のアクティブスレッドの数。
thread_pool_big_threads スレッドプール内で複雑なクエリを実行しているスレッドの数。複雑なクエリには、サブクエリ、集計関数、または GROUP BY や LIMIT などの句を含むクエリなどが含まれます。
thread_pool_dml_threads スレッドプール内で DML ステートメントを実行しているスレッドの数。
thread_pool_idle_threads スレッドプール内のアイドルスレッドの数。
thread_pool_qry_threads スレッドプール内で単純なクエリを実行しているスレッドの数。
thread_pool_total_threads スレッドプール内のスレッドの総数。
thread_pool_trx_threads スレッドプール内でトランザクションを実行しているスレッドの数。
thread_pool_wait_threads スレッドプール内でディスク I/O またはトランザクションのコミットを待機しているスレッドの数。

SysBench テスト

以下の図は、スレッドプールが有効なシナリオと無効なシナリオのパフォーマンス比較を示しています。テスト結果は、スレッドプールが高同時実行ワークロードにおいて大きなパフォーマンス上の利点があることを示しています。