Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Obtaining Execution Plan Information for a Named Connection

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 只适用于命名连接中正在执行的可解释语句。这包括SELECTDELETEINSERTREPLACEUPDATE。(然而,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语句的数量。