Spec-Zone.ru › MySQL 5.7

8.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-5.7-en/explain-for-connection.html

Spec-Zone.ru

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