■2-01■ プロセス構造MySQLサーバ本体は`mysqld'というデーモンプロセスです(【図.2-1】参照)。クライアントから接続要求を受けると、mysqldは(内部に)スレッドを生成し、そのスレッドがクライアントのSQL文を処理します。図.2-1 MySQLのプロセス構造
クライアントからの接続が切断されると、スレッドはスレッドキャッシュ(thread_cache)に保存され、次の接続要求に備えます。新たに接続要求があると、スレッドキャッシュ内のスレッドがSQL文を処理します。スレッドキャッシュが空の場合にのみ、新たにスレッドが生成されます。 スレッドキャッシュに保存できるスレッド数はシステム変数`thread_cache_size'に設定します。デフォルトは`0'なので、接続要求毎にスレッドが生成されます。 MySQLサーバに接続できるクライアントの最大数はシステム変数`max_connextions'に設定します。デフォルトは`100'です。 MySQLサーバ-クライアント間プロトコルMySQLサーバとクライアントはMySQL独自のプロトコルでデータを送受信します。このとき、サーバとクライアントが同じバージョンのプロトコルに対応していなければ通信できません。現在の最新プロトコルバージョンは`10'で、バージョン3.23, 4.0, 4.1の全てがこのバージョンに対応しています。 なお、プロトコルは随時機能拡張されており、例えばバイナリデータの送受信(バージョン4.1から)や、zipによる圧縮されたデータの送受信をサポートしています(補足 1)。 セッションセッションとは、クライアントがバックエンドプロセスに接続してから切断するまでを一つと数える、通信の単位です。例えば、 対話型インタフェースmysqlを起動してから(さまざまな処理をして)切断するまでが一つのセッションです。クライアントがバックエンドプロセスに接続することを「セッションを開始する」、接続を切断することを「セッションを終了する」と表現することがあります。 補足(1)MySQLは、OpenSSLによるMySQLサーバとmysqlクライアント間の暗号化もサポートしています。 [PREVIOUS][UP][NEXT] |