socket_instances
テーブルは MySQL サーバーへのアクティブな接続のリアルタイムスナップショットを提供します。 テーブルには、TCP/IP または Unix ソケットファイル接続ごとに 1 行含まれます。 このテーブルで使用可能な情報は、サーバーへのアクティブな接続のリアルタイムスナップショットを提供します。 (ソケット操作や送受信されたバイト数などのネットワークアクティビティーを含む、追加の情報はソケットサマリーテーブルで入手できます。セクション27.12.18.9「ソケットサマリーテーブル」を参照してください)。
mysql> SELECT * FROM performance_schema.socket_instances\G
*************************** 1. row ***************************
EVENT_NAME: wait/io/socket/sql/server_unix_socket
OBJECT_INSTANCE_BEGIN: 4316619408
THREAD_ID: 1
SOCKET_ID: 16
IP:
PORT: 0
STATE: ACTIVE
*************************** 2. row ***************************
EVENT_NAME: wait/io/socket/sql/client_connection
OBJECT_INSTANCE_BEGIN: 4316644608
THREAD_ID: 21
SOCKET_ID: 39
IP: 127.0.0.1
PORT: 55233
STATE: ACTIVE
*************************** 3. row ***************************
EVENT_NAME: wait/io/socket/sql/server_tcpip_socket
OBJECT_INSTANCE_BEGIN: 4316699040
THREAD_ID: 1
SOCKET_ID: 14
IP: 0.0.0.0
PORT: 50603
STATE: ACTIVE
ソケットインストゥルメントは形式 wait/io/socket/sql/
の名前を持ち、次のように使用されます。
socket_type
サーバーには、それがサポートする各ネットワークプロトコルの待機ソケットがあります。 TCP/IP または Unix ソケットファイル接続の待機ソケットに関連付けられているインストゥルメントは、それぞれ
server_tcpip_socket
またはserver_unix_socket
のsocket_type
値を持ちます。待機ソケットが接続を検出すると、サーバーは接続を、個別のスレッドによって管理される新しいソケットに転送します。 新しい接続スレッドのインストゥルメントは、
client_connection
のsocket_type
値を持ちます。接続が終了すると、
socket_instances
内のそれに対応する行が削除されます。
socket_instances
テーブルにはこれらのカラムがあります。
-
EVENT_NAME
イベントを生成した
wait/io/socket/*
インストゥルメントの名前。 これはsetup_instruments
テーブルからのNAME
値です。 セクション27.6「パフォーマンススキーマインストゥルメント命名規則」に説明するように、インストゥルメント名には複数の部分があり、階層を形成することがあります。 -
OBJECT_INSTANCE_BEGIN
このカラムは一意にソケットを識別します。 この値はメモリー内のオブジェクトのアドレスです。
-
THREAD_ID
サーバーによって割り当てられた内部スレッド識別子。 各ソケットは単一のスレッドによって管理されるため、各ソケットはスレッドにマップでき、スレッドはサーバープロセスにマップできます。
-
SOCKET_ID
ソケットに割り当てられている内部ファイルハンドル。
-
IP
クライアントの IP アドレス。 この値は IPv4 または IPv6 アドレスのいずれか、または Unix ソケットファイル接続を示すブランクになります。
-
PORT
0 から 65535 の範囲の TCP/IP ポート番号。
-
STATE
IDLE
またはACTIVE
のいずれかのソケットステータス。 アクティブなソケットの待機時間は、対応するソケットインストゥルメントを使用して追跡されます。 アイドルソケットの待機時間は、idle
インストゥルメントを使用して追跡されます。ソケットはクライアントからのリクエストを待機している場合、アイドルになります。 ソケットがアイドルになると、ソケットを追跡している
socket_instances
内のイベント行がACTIVE
のステータスからIDLE
に切り替わります。EVENT_NAME
値はwait/io/socket/*
のままになりますが、インストゥルメントのタイミングは一時停止されます。 代わりに、idle
のEVENT_NAME
値でevents_waits_current
テーブルにイベントが生成されます。次のリクエストを受信すると、
idle
イベントが終了し、ソケットインスタンスがIDLE
からACTIVE
に切り替わり、ソケットインストゥルメントのタイミングが再開します。
socket_instances
テーブルには次のインデックスがあります:
主キー (
OBJECT_INSTANCE_BEGIN
)(
THREAD_ID
) のインデックス(
SOCKET_ID
) のインデックス(
IP
、PORT
) のインデックス
TRUNCATE TABLE
は、socket_instances
テーブルに対して許可されていません。
IP:PORT
カラムの組み合わせの値は接続を識別します。 この組み合わせの値は、ソケットイベントの発生元の接続を識別するために、events_waits_
テーブルの xxx
OBJECT_NAME
カラムで使用されます。
Unix ドメインリスナーソケット (
server_unix_socket
) の場合、ポートは 0 で IP は''
です。Unix ドメインリスナー経由のクライアント接続 (
client_connection
) の場合、ポートは 0 で IP は''
です。TCP/IP サーバーリスナーソケット (
server_tcpip_socket
) の場合、ポートは常にマスターポート (たとえば 3306) で、IP は常に0.0.0.0
です。TCP/IP リスナー経由のクライアント接続 (
client_connection
) の場合、ポートはサーバーが割り当てたものになりますが、0 にはなりません。 IP は発信元ホストの IP (ローカルホストの場合127.0.0.1
または::1
) です