Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


29.12.3.5 socket_instances 表

socket_instances 表提供了 MySQL 服务器当前活动连接的实时快照。该表包含每个 TCP/IP 或 Unix socket 文件连接的一行信息。该表中的信息提供了服务器当前活动连接的实时快照。 (更多信息请见 socket 汇总表,包括 socket 操作和传输的字节数等信息;请见第29.12.20.9节,“Socket Summary Tables”。)

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

socket 仪表盘的名称为 wait/io/socket/sql/socket_type,并且用于以下方式:

  1. 服务器为每种网络协议都有一个监听 socket。与 TCP/IP 或 Unix socket 文件连接的监听 socket 的仪表盘的 socket_type 值为 server_tcpip_socketserver_unix_socket,分别。

  2. 当监听 socket 检测到连接时,服务器将连接转移到由单独线程管理的新 socket 中。该线程的仪表盘的 socket_type 值为 client_connection

  3. 当连接终止时,socket_instances 表中的相应行将被删除。

socket_instances 表具有以下列:

  • EVENT_NAME

    该事件的 wait/io/socket/* 仪表盘名称。这是setup_instruments 表中的 NAME 值。仪表盘名称可能具有多个部分,并且可以形成层次结构,如Section 29.6, “Performance Schema Instrument Naming Conventions” 中所述。

  • OBJECT_INSTANCE_BEGIN

    该列唯一标识 socket。值是内存中的对象地址。

  • THREAD_ID

    服务器分配的内部线程标识符。每个 socket 都由单独线程管理,可以映射到服务器进程。

  • SOCKET_ID

    socket 的内部文件句柄。

  • IP

    客户端 IP 地址。值可能是 IPv4 或 IPv6 地址,也可能是空白,以表示 Unix socket 文件连接。

  • PORT

    TCP/IP 端口号,范围为 0 到 65535。

  • STATE

    socket 状态,既可以是 IDLE 也可以是 ACTIVE。对于活动套接字,等待时间使用相应的套接字仪器跟踪。对于空闲套接字,等待时间使用 idle 仪器跟踪。

    套接字是空闲的,如果它正在等待来自客户端的请求。套接字变为空闲时,socket_instances 中的事件行从 ACTIVE 状态切换到 IDLE 状态。 EVENT_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 对于本地主机)