Spec-Zone.ru › MySQL 8.4

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-сокеты, имеют значение socket_type соответственно равное server_tcpip_socket или server_unix_socket.

  2. Когда сокет для прослушивания обнаруживает соединение, сервер передает соединение в новый сокет, управляемый отдельным потоком. Инструмент для нового потока соединения имеет значение socket_type равное client_connection.

  3. Когда соединение завершается, строка в socket_instances, соответствующая ей, удаляется.

Таблица socket_instances содержит следующие столбцы:

  • EVENT_NAME

    Имя инструмента wait/io/socket/*, который сгенерировал событие. Это значение NAME из таблицы setup_instruments. Имена инструментов могут состоять из нескольких частей и образовывать иерархию, как описано в Разделе 29.6, «Конвенции именования инструментов Performance Schema».

  • OBJECT_INSTANCE_BEGIN

    Этот столбец уникально идентифицирует сокет. Значение — адрес объекта в памяти.

  • THREAD_ID

    Внутренний идентификатор потока, назначенный сервером. Каждый сокет управляется одним потоком, поэтому каждый сокет можно сопоставить с потоком, который можно сопоставить с процессом сервера.

  • SOCKET_ID

    Внутренний дескриптор файла, назначенный сокету.

  • IP

    IP-адрес клиента. Значение может быть либо 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.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/performance-schema-socket-instances-table.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API