该 socket_instances
表提供了 MySQL 服务器的活动连接的实时快照。该表包含每个 TCP/IP 或 Unix 套接字文件连接的一行。该表中的信息提供了服务器的活动连接的实时快照。(其他信息可在套接字摘要表中找到,包括网络活动,如套接字操作和传输的字节数;见 第 29.12.20.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 套接字文件连接的监听套接字关联的仪表具有
socket_type
值server_tcpip_socket
或server_unix_socket
。 -
当监听套接字检测到连接时,服务器将连接传输到由单独线程管理的新套接字。新连接线程的仪表具有
socket_type
值client_connection
。 -
当连接终止时,
socket_instances
表中对应的行将被删除。
该 socket_instances
表具有以下列:
-
EVENT_NAME
产生事件的
wait/io/socket/*
仪表的名称。这是setup_instruments
表中的一个NAME
值。仪表名称可能具有多个部分,形成一个层次结构,如 第 29.6 节,“性能模式仪表命名约定” 中所述。 -
OBJECT_INSTANCE_BEGIN
该列唯一标识套接字。该值是内存中对象的地址。
-
THREAD_ID
服务器分配的内部线程标识符。每个套接字由单个线程管理,因此每个套接字可以映射到一个线程,可以映射到服务器进程。
-
SOCKET_ID
分配给套接字的内部文件句柄。
-
IP
客户端 IP 地址。该值可能是 IPv4 或 IPv6 地址,或者为空以指示 Unix 套接字文件连接。
-
PORT
TCP/IP 端口号,从 0 到 65535。
-
STATE
套接字状态,either
IDLE
或ACTIVE
。活动套接字的等待时间使用相应的套接字仪表跟踪。空闲套接字的等待时间使用idle
仪表跟踪。套接字为空闲状态,如果它正在等待来自客户端的请求。当套接字变为空闲状态时,
socket_instances
表中跟踪套接字的事件行将从ACTIVE
状态切换到IDLE
状态。EVENT_NAME
值保持不变,但仪表的计时被暂停。相反,在events_waits_current
表中生成一个事件,EVENT_NAME
值为idle
。当下一个请求到达时,
idle
事件终止,套接字实例从IDLE
状态切换到ACTIVE
状态,并恢复套接字仪表的计时。
该 socket_instances
表具有以下索引:
-
主键(
OBJECT_INSTANCE_BEGIN
) -
索引(
THREAD_ID
) -
索引(
SOCKET_ID
) -
在 (
IP
,PORT
) 上的索引
TRUNCATE TABLE
不允许用于 socket_instances
表。
IP:PORT
列组合值标识连接。该组合值用于 OBJECT_NAME
列中的 events_waits_
表,以标识来自哪个连接的套接字事件:xxx
-
对于 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
为本地主机)