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

PolarDB:スレッドプール

最終更新日:Jul 30, 2024

PolarDB for MySQL、データベースのパフォーマンスとリソース使用率を最適化するためのスレッドプール機能を提供します。 この機能は、スレッドをセッションから切り離します。 この機能は、セッションごとに1つのスレッドではなく、スレッドのプールを使用して、アクティブなセッション全体でタスクを実行します。

メリット

従来のMySQLアーキテクチャでは、セッションごとにスレッドが作成され維持されます。 多数のセッションが存在する場合、高いリソース競合、過剰なスレッドスケジューリング、およびキャッシュ無効化が発生する可能性があり、これはクラスタ性能を著しく低下させる。

PolarDBのスレッドプールでは、さまざまな種類のSQL操作に異なる優先度を持たせ、同時実行制御を実装し、接続数を最適な数に制限します。 これにより、PolarDBクラスターは、接続の同時実行性が高い場合でも高いパフォーマンスを維持できます。 スレッドプール機能には、次の利点があります。

  • 多数のスレッドが同時に実行されると、スレッドプールは妥当な範囲内で同時スレッドの数を自動的に調整します。 これにより、過剰なスレッドスケジューリングを回避し、キャッシュ無効化のリスクを軽減できます。

  • 多数のタスクが同時に実行される場合、スレッドプールは、ステートメントとトランザクションを個別に優先順位付けおよび管理し、ステートメントとトランザクションの同時実行数を制御します。これにより、リソースの競合が緩和され、システムのパフォーマンスが最適化されます。

  • スレッドプールは、管理関連のSQL文に高い優先度を付与します。 これにより、システム負荷が高い場合でも、接続確立、データベース管理、データベース監視などの操作を確実に実行できます。

  • スレッドプールは、複雑なSQL文に低い優先度を付与し、これらの文の最大通貨を制限します。 これにより、複雑なクエリによるシステムリソースの過剰な消費が防止され、データベースシステム全体が動作し続けることが保証される。

スレッドプールの使用方法

次の表に示すパラメーターを使用して、PolarDBコンソールでスレッドプール機能を設定できます。 詳細については、「クラスターとノードパラメーターの設定」をご参照ください。

パラメーター

説明

loose_thread_pool_enabled

スレッドプール機能を有効にするかどうかを指定します。 有効な値:

  • ON

  • オフ

既定値:OFF

説明

スレッドプール機能を有効または無効にした後、クラスターを再起動する必要はありません。

loose_thread_pool_size

スレッドプール内のスレッドグループの数。 有効な値は、プライマリノードのCPUコアの数によって異なります。

有効値: DBNodeClassCPU〜DBNodeClassCPU × 10。

デフォルト値: DBNodeClassCPU × 2

説明
  • DBNodeClassCPUは、プライマリノードのCPUコアの数を表します。 値は整数です。

  • データベースエンジンMySQL 5.7のクラスターの場合、デフォルト値はDBNodeClassCPUです。

例:

  • データベースエンジンMySQL 8.0.1、Editionがcluster Editionのクラスターの場合、プライマリノードに4コアと8 GBのメモリがある場合、パラメーターの有効な値は4〜40、デフォルト値は8です。

  • データベースエンジンMySQL 8.0.1、Editionがマルチマスタークラスタ (データベース /テーブル) エディションのクラスターの場合、プライマリノードに4コアと8 GBのメモリがある場合、パラメーターの有効値は8〜80で、デフォルト値は16です。

  • データベースエンジンMySQL 5.7、Editionがcluster Editionのクラスターの場合、プライマリノードに4コアと8 GBのメモリがある場合、パラメーターの有効な値は4 ~ 40で、デフォルト値は4です。

loose_thread_pool_high_prio_mode

優先度の高いキューに追加するSQLクエリの種類。 有効な値:

  • トランザクション: 進行中のトランザクションのSQLクエリが優先度の高いキューに追加され、チケットが割り当てられます。 チケット数は、thread_pool_high_prio_ticketsパラメーターで指定します。 これらのトランザクションの後続のSQLクエリはすべて、チケットが使い果たされるまで高優先度キューに配置されます。

  • 文: すべてのSQLクエリが高優先度キューに追加されます

  • none: 優先度の高いキューにSQLクエリが追加されない

デフォルト値: transactions。

説明

このパラメーターは、PolarDB for MySQLの5.6および5.7クラスターでのみサポートされます。

loose_thread_pool_high_prio_tickets

優先度の高いキューに割り当てられたチケットの最大数。

有効な値: 0 ~ 4294967295

デフォルト値: 4294967295

説明

このパラメーターは、PolarDB for MySQLの5.6および5.7クラスターでのみサポートされます。

loose_thread_pool_idle_timeout

アイドル状態のスレッドが解放されるまでのタイムアウトしきい値。

有効な値: 0 ~ 31536000

値の範囲:60

単位は秒です。

説明

このパラメーターは、PolarDB for MySQLの5.6および5.7クラスターでのみサポートされます。

loose_thread_pool_oversubscribe

各スレッドグループで許可されるアクティブなスレッドの最大数。

アクティブなスレッドは、SQL文を実行しているスレッドです。 スレッドによって実行されたステートメントが次のステータスの場合、スレッドはアクティブではありません。

  • SQLステートメントは、ディスクI/O操作が完了するまで保留中です。

  • SQLステートメントは、コミットされるトランザクションに対して保留中です。

有効な値: 1 ~ 1000

デフォルト値は 10 です。

loose_thread_pool_stall_limit

スレッドプールが輻輳状態になるまでのタイムアウトしきい値。

スレッドプールが輻輳状態になると、システムはSQL文を実行するための新しいスレッドを作成します。

有効な値: 1 ~ 18446744073709551615

既定値:5

単位:ミリ秒。

説明

データベースエンジンMySQL 5.6のクラスターの場合、デフォルト値は30ミリ秒です。

loose_bypass_thread_pool_ips

スレッドプールによって課された制限を回避できるクライアントIPアドレス。 これらのIPアドレスを持つクライアントは、スレッドプールが完全に占有されていても、管理SQL文を実行できます。

例:

10.69.96.16,10.69.96.17
説明

このパラメーターは、PolarDB for MySQL 8.0.1.1.19以降のクラスターでのみサポートされます。

loose_bypass_thread_pool_check_ignore_proxy

これらのIPアドレスを持つクライアントがProxy経由でデータベースに接続するときに、loose_bypass_thread_pool_ipsパラメーターのIPアドレスの指定を無視するかどうかを指定します。 有効な値:

  • ON: これらのIPアドレスを持つクライアントがProxy経由でデータベースに接続する場合、loose_bypass_thread_pool_ipsパラメーターのIPアドレスの指定を無視します。

  • OFF: これらのIPアドレスを持つクライアントがプロキシ経由でデータベースに接続する場合、loose_bypass_thread_pool_ipsパラメーターのIPアドレスの指定を無視しません。

デフォルト値: ON。

説明

このパラメーターは、PolarDB for MySQL 8.0.1.1.19以降のクラスターでのみサポートされます。

loose_thread_pool_high_priority_users

優先度の高いデータベースアカウント。 これらのアカウントからのリクエストは、スレッドプールの高優先度キューに配置され、最初に処理されます。

例:

user1, user2
説明
  • このパラメーターは、PolarDB for MySQL 8.0.1.1.19以降のクラスターでのみサポートされます。

  • このパラメーターは、新しく確立されたデータベース接続にのみ有効です。

  • 優先度の高いアカウントを最小限に設定することを推奨します。

loose_thread_pool_mark_ddl_thread_timeout_sec

スレッドプールでのDDL操作のタイムアウトしきい値。 しきい値に達すると、DDL操作はタイムアウトとラベル付けされ、システムは操作を実行するための新しいスレッドを自動的に作成します。

有効な値: 0 ~ 864000

既定値:600。

単位は秒です。

説明

このパラメーターは、PolarDB for MySQL 8.0.1.1.19以降のクラスターでのみサポートされます。

loose_thread_pool_mark_ddl_thread_timeout_immediately

スレッドプールの負荷が高く、優先度の低いキューが積み上げられている場合に、DDLステートメントにタイムアウトとしてすぐにラベルを付け、ステートメントを処理する新しいスレッドを作成するかどうかを指定します。 このパラメーターは、多数のDDLステートメントを実行する必要があるシナリオに適用できます。 有効な値:

  • ON

  • オフ

既定値:OFF

説明

このパラメーターは、PolarDB for MySQL 8.0.1.1.19以降のクラスターでのみサポートされます。

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

次のステートメントを実行して、スレッドプールのステータスを照会できます。

select * from information_schema.THREAD_POOL_STATUS;

サンプル出力:

mysql> select * from information_schema.THREAD_POOL_STATUS;
+----+--------------+---------------------+----------------------+-------------------+---------------------------+------------------+-----------------+------------------+
| ID | THREAD_COUNT | ACTIVE_THREAD_COUNT | WAITING_THREAD_COUNT | DUMP_THREAD_COUNT | SLOW_THREAD_TIMEOUT_COUNT | CONNECTION_COUNT | LOW_QUEUE_COUNT | HIGH_QUEUE_COUNT |
+----+--------------+---------------------+----------------------+-------------------+---------------------------+------------------+-----------------+------------------+
|  0 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  1 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  2 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  3 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  4 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  5 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  6 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  7 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  8 |            1 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  9 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 10 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 11 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 12 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 13 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 14 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 15 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 16 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 17 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 18 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 19 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 20 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 21 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 22 |            2 |                   1 |                    0 |                 0 |                         0 |                1 |               0 |                0 |
| 23 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 24 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 25 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 26 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 27 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 28 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 29 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 30 |            2 |                   0 |                    0 |                 0 |                         0 |                1 |               0 |                0 |
| 31 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 32 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 33 |            2 |                   0 |                    0 |                 0 |                         0 |                1 |               0 |                0 |
| 34 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 35 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 36 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 37 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 38 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 39 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 40 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 41 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 42 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 43 |            1 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 44 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 45 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 46 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 47 |            3 |                   1 |                    0 |                 0 |                         0 |                1 |               0 |                0 |
| 48 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 49 |            3 |                   1 |                    0 |                 0 |                         0 |                1 |               0 |                0 |
| 50 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 51 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 52 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 53 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 54 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 55 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 56 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 57 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 58 |            1 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 59 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 60 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 61 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 62 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 63 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
+----+--------------+---------------------+----------------------+-------------------+---------------------------+------------------+-----------------+------------------+
64 rows in set (0.00 sec)

下表に、各パラメーターを説明します。

パラメーター

説明

ID

スレッドプールのID。

THREAD_COUNT

スレッドプール内のスレッド数。

ACTIVE_THREAD_COUNT

スレッドプール内のアクティブなスレッドの数。

WAITING_THREAD_COUNT

完了するディスクI/O操作を保留しており、スレッドプールでコミットされるトランザクションを保留しているスレッドの数。

DUMP_THREAD_COUNT

スレッドプール内のDUMPクラスの永続接続の数。

SLOW_THREAD_TIMEOUT_COUNT

スレッドプールでタイムアウトとラベル付けされているスレッドの数。

CONNECTION_COUNT

スレッドプールで確立されたユーザー接続の数。

LOW_QUEUE_COUNT

スレッドプールの優先度の低いキューにある保留中のリクエストの数。

HIGH_QUEUE_COUNT

スレッドプールの高優先度キューにある保留中のリクエストの数。

Sysbenchテスト

このセクションでは、スレッドプール機能が有効と無効の場合のデータベースのパフォーマンスを比較します。 テスト結果は、スレッドプール機能が有効になっている場合、同時実行性の高い条件下でデータベースのパフォーマンスが大幅に向上することを示しています。

図 1. パフォーマンスのオンライントランザクション処理 (OLTP) システムは、インデックスを持たないテーブルの更新操作を処理します OLTP无索引更新

図2. パフォーマンスのOLTPシステムを処理する書き込み専用操作 OLTP只写

図3. パフォーマンスのOLTPシステム処理読み取り専用操作 OLTP只读

図4. パフォーマンスのOLTPシステムに対応した読み取り /書き込み操作 OLTP读写测试