スレッドプール機能は次のコンポーネントで構成されます。
-
プラグインライブラリオブジェクトファイルには、スレッドプールコード用のプラグインと、いくつかの
INFORMATION_SCHEMA
テーブル用のプラグインが含まれています。スレッドプールの仕組みの詳細については、セクション8.11.6.2「スレッドプール操作」を参照してください。
INFORMATION_SCHEMA
テーブルには、TP_THREAD_STATE
、TP_THREAD_GROUP_STATE
、およびTP_THREAD_GROUP_STATS
という名前が付けられています。これらのテーブルは、スレッドプール操作に関する情報を提供します。詳細については、セクション21.31「スレッドプールの INFORMATION_SCHEMA テーブル」を参照してください。 -
いくつかのシステム変数がスレッドプールに関連しています。
thread_handling
システム変数は、サーバーがスレッドプールプラグインを正常にロードしたときに、loaded-dynamically
の値になります。ほかの関連の変数はスレッドプールプラグインによって実装されます。それが有効にされていない場合、それらは使用できません。
thread_pool_algorithm
: スケジューリングに使用する並列性アルゴリズム。thread_pool_high_priority_connection
: セッションのステートメント実行のスケジュール方法。thread_pool_prio_kickup_timer
: スレッドプールが、実行を待機しているステートメントを低優先度キューから高優先度キューに移動するまでの時間。thread_pool_max_unused_threads
: 許可するスリープ中のスレッド数。thread_pool_size
: スレッドプール内のスレッドグループの数。これはスレッドプールのパフォーマンスを制御するもっとも重要なパラメータです。thread_pool_stall_limit
: 実行中のステートメントが停滞しているとみなされるまでの時間。
起動時に、プラグインによって実装されているいずれかの変数が不正な値に設定された場合、プラグインの初期化が失敗し、プラグインはロードされません。
スレッドプールパラメータの設定については、セクション8.11.6.3「スレッドプールのチューニング」を参照してください。
パフォーマンススキーマは、スレッドプールに関する情報を公開し、操作のパフォーマンスの調査に使用できます。詳細については、第22章「MySQL パフォーマンススキーマ」を参照してください。
サーバーが使用できるように、スレッドプールライブラリオブジェクトファイルは MySQL プラグインディレクトリ (plugin_dir
システム変数によって指定されたディレクトリ) に存在する必要があります。スレッドプール機能を有効にするには、--plugin-load
オプションでサーバーを起動することによって、使用されるプラグインをロードします。たとえば、プラグインオブジェクトファイルだけを指定した場合、サーバーはそれに含まれるすべてのプラグイン (つまり、スレッドプールプラグインとすべての INFORMATION_SCHEMA
テーブル) をロードします。これを実行するには、これらの行を my.cnf
ファイルに挿入します。
[mysqld]
plugin-load=thread_pool.so
それは、個別にスレッドプールプラグインを指定して、それらをすべてロードするのと同等です。
[mysqld]
plugin-load=thread_pool.so
plugin-load=thread_pool=thread_pool.so;tp_thread_state=thread_pool.so;tp_thread_group_state=thread_pool.so;tp_thread_group_stats=thread_pool.so
システム上のオブジェクトファイルのサフィクスが .so
とは異なる場合、正しいサフィクスに置き換えてください (たとえば Windows の場合は .dll
)。
必要に応じて、サーバーにプラグインディレクトリの場所を伝えるために、plugin_dir
システム変数の値を設定します。
必要な場合、ライブラリファイルから個々のプラグインをロードできます。スレッドプールプラグインをロードするが、INFORMATION_SCHEMA
テーブルはロードしない場合、次のようなオプションを使用します。
[mysqld]
plugin-load=thread_pool=thread_pool.so
スレッドプールプラグインと TP_THREAD_STATE
INFORMATION_SCHEMA
テーブルのみをロードするには、次のようなオプションを使用します。
[mysqld]
plugin-load=thread_pool=thread_pool.so;TP_THREAD_STATE=thread_pool.so
ただし、すべての INFORMATION_SCHEMA
テーブルをロードしない場合、一部またはすべての MySQL Enterprise Monitor スレッドプールグラフが空になります。
プラグインのインストールを検証するには、INFORMATION_SCHEMA.PLUGINS
テーブルを調査するか、SHOW PLUGINS
ステートメントを使用します。セクション5.1.8.2「サーバープラグイン情報の取得」を参照してください。
サーバーはスレッドプラグインを正常にロードしたら、thread_handling
システム変数を dynamically-loaded
に設定します。プラグインのロードに失敗した場合、サーバーはエラーログにメッセージを書き込みます。