The socket_instances
Table
The socket_instances
table provides a real-time snapshot of the active connections to the MariaDB server. The table contains one row per TCP/IP or Unix socket file connection. Information available in this table includes network activity such as socket instances, socket operations, and number of bytes transmitted and received.
mysql> SELECT * FROM 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 instruments have names of the form wait/io/socket/sql/
and are used like this:
socket_type
- The server has a listening socket for each network protocol that it supports. The instruments associated with listening sockets for TCP/IP or Unix socket file connections have a
socket_type
value ofserver_tcpip_socket
orserver_unix_socket
, respectively. - When a listening socket detects a connection, the server transfers the connection to a new socket managed by a separate thread. The instrument for the new connection thread has a
socket_type
value ofclient_connection
. - When a connection terminates, the row in
socket_instances
corresponding to it is deleted.
The socket_instances
table has these columns:
EVENT_NAME
The name of the
wait/io/socket/*
instrument that produced the event. This is asetup_instruments.NAME
value. Instrument names have multiple parts and form a hierarchy, as discussed in , "Performance Schema Instrument Naming Conventions".OBJECT_INSTANCE_BEGIN
This column uniquely identifies the socket. The value is the address of an object in memory.
THREAD_ID
The internal thread identifier assigned by the server. Each socket is managed by a single thread, so each socket can be mapped to a thread which can be mapped to a server process.
SOCKET_ID
The internal file handle assigned to the socket.
IP
The client IP address. The value may be either an IPv4 or IPv6 address, or blank to indicate a Unix socket file connection.
PORT
The TCP/IP port number, in the range from 0 to 65535.
STATE
The socket status, either
IDLE
orACTIVE
. Wait times for active sockets are tracked using the corresponding socket instrument. Wait times for idle sockets are tracked using theidle
instrument.A socket is idle if it is waiting for a request from the client. When a socket becomes idle, the event row in
socket_instances
that is tracking the socket switches from a status ofACTIVE
toIDLE
. TheEVENT_NAME
value remainswait/io/socket/*
, but timing for the instrument is suspended. Instead, an event is generated in theevents_waits_current
table with anEVENT_NAME
value ofidle
.When the next request is received, the
idle
event terminates, the socket instance switches fromIDLE
toACTIVE
, and timing of the socket instrument resumes.
The IP:PORT
column combination value identifies the connection. This combination value is used in the OBJECT_NAME
column of the events_waits_
tables, to identify the connection from which socket events come:
xxx
- For the Unix domain listener socket (
server_unix_socket
), the port is 0, and the IP is''
. - For client connections via the Unix domain listener (
client_connection
), the port is 0, and the IP is''
. - For the TCP/IP server listener socket (
server_tcpip_socket
), the port is always the master port (for example, 3306), and the IP is always0.0.0.0
. - For client connections via the TCP/IP listener (
client_connection
), the port is whatever the server assigns, but never 0. The IP is the IP of the originating host (127.0.0.1
or::1
for the local host)
The socket_instances
table was added in MariaDB 5.6.3.