MySQL サーバーは次のスレッドを作成します。
接続マネージャースレッドは、サーバーが待機しているネットワークインタフェース上でクライアントの接続要求を処理します。どのプラットフォームでも、1 つのマネージャースレッドが TCP/IP 接続要求を処理します。Unix では、このマネージャースレッドは Unix ソケットファイルの接続要求も処理します。Windows では、1 つのマネージャースレッドが共有メモリーの接続要求を処理し、別のマネージャースレッドが名前付きパイプの接続要求を処理します。サーバーは、待機していないインタフェースを処理するためのスレッドを作成しません。たとえば、Windows サーバーで名前付きパイプ接続のサポートが有効になっていない場合、これらの接続を処理するスレッドは作成されません。
接続マネージャースレッドは、各クライアント接続を、その接続の認証および要求を処理する専用スレッドに関連付けます。マネージャースレッドは、必要に応じて新しいスレッドを作成しますが、まずスレッドキャッシュを調べて接続に使用できるスレッドが含まれているかどうかを確認することによって、それを回避することを試みます。接続が終了すると、スレッドキャッシュが満杯でない場合は、そのスレッドがスレッドキャッシュに返されます。
スレッドのリソースを制御するパラメータの調整については、セクション8.11.5.1「MySQL のクライアント接続のためのスレッドの使用方法」を参照してください。
マスターレプリケーションサーバーでは、スレーブサーバーからの接続はクライアント接続のように扱われ、接続されているスレーブごとに 1 つのスレッドがあります。
スレーブレプリケーションサーバー上では、マスターサーバーに接続してそこから更新を読み取るための I/O スレッドが開始されます。マスターから読み取られた更新を適用するための SQL スレッドが開始されます。これらの 2 つのスレッドは別個に実行され、別個に開始および停止できます。
シグナルスレッドはすべてのシグナルを処理します。通常、このスレッドは、アラームの処理、および長時間アイドル状態になっている接続をタイムアウトさせる
process_alarm()
の呼び出しも行います。InnoDB
が使用される場合は、デフォルトでは追加の読み取りスレッドおよび書き込みスレッドが存在します。これらの数は、innodb_read_io_threads
およびinnodb_write_io_threads
パラメータによって制御されます。セクション14.12「InnoDB の起動オプションおよびシステム変数」を参照してください。mysqldが
-DUSE_ALARM_THREAD
を指定してコンパイルされている場合は、アラームを処理する専用のスレッドが作成されます。これが使用されるのは、sigwait()
に問題があるシステムの場合、および専用のシグナル処理スレッドを使用せずにアプリケーションでthr_alarm()
コードを使用する場合のみです。サーバーが
--flush_time=
オプションを指定して起動された場合、val
val
秒ごとにすべてのテーブルをフラッシュする専用のスレッドが作成されます。INSERT DELAYED
ステートメントが発行された各テーブルには、独自のスレッドが作成されます。セクション13.2.5.2「INSERT DELAYED 構文」を参照してください。イベントスケジューラがアクティブである場合は、スケジューラの 1 つスレッド、および現在実行されている各イベントのそれぞれのスレッドが存在します。セクション20.4.1「イベントスケジューラの概要」を参照してください。
mysqladmin processlistは、接続、INSERT DELAYED
、レプリケーション、およびイベントスレッドのみを表示します。