如果Mysql查询是什么意思:
SHOW PROCESSLIST;
在状态列中返回“发送数据”?
我想这意味着查询已经执行并且 MySQL 正在向客户端发送“结果”数据,但我想知道为什么它需要这么多时间(最多一个小时)。
谢谢你。
如果Mysql查询是什么意思:
SHOW PROCESSLIST;
在状态列中返回“发送数据”?
我想这意味着查询已经执行并且 MySQL 正在向客户端发送“结果”数据,但我想知道为什么它需要这么多时间(最多一个小时)。
谢谢你。
这是一种相当误导的状态。它应该被称为“读取和过滤数据”。
这意味着MySQL
有一些数据存储在磁盘(或内存)上,尚未被读取和发送。它可能是表本身、索引、临时表、排序输出等。
如果您有一个仅需要一条记录的 1M 记录表(没有索引),MySQL
则在扫描表时仍会输出状态为“正在发送数据”,尽管事实上它尚未发送任何内容。
MySQL 8.0.17 及更高版本:此状态不再单独表示,而是包含在Executing状态中。
在这种状态下:
该线程正在读取和处理 SELECT 语句的行,并将数据发送到客户端。
因为在此状态期间发生的操作往往会执行 大量磁盘访问(读取)。
这就是为什么它需要更多时间来完成,因此在给定查询的生命周期中运行时间最长的状态也是如此。