在 MySQL 8 服务器社区中,以下两个命令显示相同的结构:
SHOW PROCESSLIST;
SELECT * FROM information_schema.PROCESSLIST;
问题
- 什么时候使用
SHOW PROCESSLIST
vsSELECT * FROM information_schema.PROCESSLIST
命令?
每个命令的存在都有特定的原因,对吗?
关于它们的输出,我只发现每个命令的State
和列分别有两个区别:Info
State | Info
----------------------------
init | SHOW PROCESSLIST
executing | SELECT * FROM information_schema.PROCESSLIST
该列的区别Info
很明显,因为它代表了执行的命令本身,但是:
- 为什么列不同
State
?
价值很明确,executing
但是:
- 这个值代表什么
init
意思?
SHOW PROCESSLIST
是黑暗时代的一种古老实现方式。information_schema.PROCESSLIST
在 MySQL 5.1 中添加。手册(未在线)指出:使用的优势
INFORMATION_SCHEMA.PROCESSLIST
在于,您可以使用熟悉的SELECT
语法来获取指定的列或行子集。但在内部,两种形式的信息都来自同一来源。自 MySQL 8.0.22 起,此
INFORMATION_SCHEMA
表已弃用。建议您使用PERFORMANCE_SCHEMA.PROCESSLIST
或SYS.PROCESSLIST
视图。手册指出:
您可以设置该
performance_schema_show_processlist=ON
选项,如果设置了,则将使用性能模式信息源SHOW PROCESSLIST
。我不明白为什么默认情况下它没有启用,因为这似乎是个好主意。