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.