MySQL处于“正在发送数据"状态是什么意思?

2021-11-20 00:00:00 mysql

如果Mysql查询是什么意思:

What does it mean if the Mysql query:

SHOW PROCESSLIST;

在状态"列中返回正在发送数据"?

returns "Sending data" in the State column?

我想这意味着查询已经执行并且 MySQL 正在向客户端发送结果"数据,但我想知道为什么它需要这么多时间(最多一个小时).

I imagine it means the query has been executed and MySQL is sending "result" Data to the client but I'm wondering why its taking so much time (up to an hour).

谢谢.

推荐答案

这是一种误导性的状态.它应该被称为读取和过滤数据".

This is quite a misleading status. It should be called "reading and filtering data".

这意味着 MySQL 有一些数据存储在磁盘(或内存)中,但尚未读取和发送.它可能是表本身、索引、临时表、排序输出等.

This means that MySQL has some data stored on the disk (or in memory) which is yet to be read and sent over. It may be the table itself, an index, a temporary table, a sorted output etc.

如果你有一个 1M 的记录表(没有索引),你只需要一个记录,MySQL 仍然会输出状态为发送数据";在扫描表格时,尽管它尚未发送任何内容.

If you have a 1M records table (without an index) of which you need only one record, MySQL will still output the status as "sending data" while scanning the table, despite the fact it has not sent anything yet.

MySQL 8.0.17 及更高版本:此状态不再单独指示,而是包含在 Executing 状态中.

MySQL 8.0.17 and later: This state is no longer indicated separately, but rather is included in the Executing state.

相关文章