文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9MB
PDF (A4) - 40.0MB
手册页 (TGZ) - 258.5KB
手册页 (Zip) - 365.5KB
信息 (Gzip) - 4.0MB
信息 (Zip) - 4.0MB


29.12.3.5 socket_instances 表

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,用法如下

  1. 服务器为其支持的每个网络协议都有一个监听套接字。与 TCP/IP 或 Unix 套接字文件连接的监听套接字关联的检测点分别具有 server_tcpip_socketserver_unix_socketsocket_type 值。

  2. 当监听套接字检测到连接时,服务器会将连接转移到由单独线程管理的新套接字。新连接线程的检测点的 socket_type 值为 client_connection

  3. 当连接终止时,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

    套接字状态,IDLEACTIVE。活动套接字的等待时间使用相应的套接字检测点进行跟踪。空闲套接字的等待时间使用 idle 检测点进行跟踪。

    如果套接字正在等待来自客户端的请求,则该套接字处于空闲状态。当套接字变为空闲状态时,socket_instances 中跟踪套接字的事件行的状态将从 ACTIVE 切换为 IDLEEVENT_NAME 值保持为 wait/io/socket/*,但检测点的计时将暂停。相反,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 列组合值标识连接。此组合值用于 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