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
Сервер имеет сокет для прослушивания для каждого сетевого протокола, который он поддерживает. Инструменты, связанные с сокетами для прослушивания TCP/IP или соединений Unix-сокеты, имеют значение
socket_typeсоответственно равноеserver_tcpip_socketилиserver_unix_socket.Когда сокет для прослушивания обнаруживает соединение, сервер передает соединение в новый сокет, управляемый отдельным потоком. Инструмент для нового потока соединения имеет значение
socket_typeравноеclient_connection.Когда соединение завершается, строка в
socket_instances, соответствующая ей, удаляется.
Таблица socket_instances содержит следующие столбцы:
-
EVENT_NAMEИмя инструмента
wait/io/socket/*, который сгенерировал событие. Это значениеNAMEиз таблицыsetup_instruments. Имена инструментов могут состоять из нескольких частей и образовывать иерархию, как описано в Разделе 29.6, «Конвенции именования инструментов Performance Schema». -
OBJECT_INSTANCE_BEGINЭтот столбец уникально идентифицирует сокет. Значение — адрес объекта в памяти.
-
THREAD_IDВнутренний идентификатор потока, назначенный сервером. Каждый сокет управляется одним потоком, поэтому каждый сокет можно сопоставить с потоком, который можно сопоставить с процессом сервера.
-
SOCKET_IDВнутренний дескриптор файла, назначенный сокету.
-
IPIP-адрес клиента. Значение может быть либо IPv4-, либо IPv6-адресом, либо пустым, чтобы указать соединение через файл сокета Unix.
-
PORTНомер порта TCP/IP в диапазоне от 0 до 65535.
-
STATEСтатус сокета, либо
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 идентифицирует соединение. Это значение используется в столбце 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для локального узла).
© 2025 Oracle
Licensed under the GPLv2 License.