文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  获取命名连接的执行计划信息

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 语句的数量。