Spec-Zone.ru › MySQL 8.4

10.8.4 Получение информации о плане выполнения для именованного соединения

Для получения плана выполнения для объяснимаемого оператора, выполняющегося в именованном соединении, используйте этот оператор:

EXPLAIN [options] FOR CONNECTION connection_id;

EXPLAIN FOR CONNECTION возвращает информацию о EXPLAIN, которая в данный момент используется для выполнения запроса в заданном соединении. Из-за изменений в данных (и поддерживаемых статистических данных) результат может отличаться от результата выполнения EXPLAIN с эквивалентным текстом запроса. Это различие в поведении может быть полезно для диагностики более временных проблем с производительностью. Например, если оператор в одной сессии выполняется долго, использование EXPLAIN FOR CONNECTION в другой сессии может дать полезную информацию о причинах задержки.

connection_id — это идентификатор соединения, полученный из таблицы INFORMATION_SCHEMA PROCESSLIST или оператора SHOW PROCESSLIST. Если у вас есть привилегия PROCESS, вы можете указать идентификатор для любого соединения. В противном случае вы можете указать идентификатор только для собственных соединений. Во всех случаях у вас должны быть достаточные привилегии для объяснения запроса в указанном соединении.

Если именованное соединение не выполняет оператор, результат пуст. В противном случае EXPLAIN FOR CONNECTION применяется только в том случае, если оператор, выполняемый в именованном соединении, объясним. Это включает SELECT, DELETE, INSERT, REPLACE и UPDATE. (Однако, EXPLAIN FOR CONNECTION не работает для подготовленных операторов, даже подготовленных операторов указанных типов.)

Если именованное соединение выполняет объяснимаемый оператор, вывод будет таким же, как при использовании EXPLAIN для самого оператора.

Если именованное соединение выполняет оператор, который не объясним, возникает ошибка. Например, вы не можете назвать идентификатор соединения для вашей текущей сессии, потому что EXPLAIN не объясним:

mysql> SELECT CONNECTION_ID();
+-----------------+
| CONNECTION_ID() |
+-----------------+
|             373 |
+-----------------+
1 row in set (0.00 sec)

mysql> EXPLAIN FOR CONNECTION 373;
ERROR 1889 (HY000): EXPLAIN FOR CONNECTION command is supported
only for SELECT/UPDATE/INSERT/DELETE/REPLACE

Переменная состояния Com_explain_other указывает количество выполненных операторов EXPLAIN FOR CONNECTION.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/explain-for-connection.html

Spec-Zone.ru

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