-
After create
当线程在创建表的函数的末尾创建表(包括内部临时表)时,会发生这种情况。即使由于某些错误而无法创建表,也会使用此状态。
-
altering table
服务器正在执行就地服务 ALTER TABLE
。
-
Analyzing
该线程正在计算MyISAM
表键分布(例如for ANALYZE TABLE
)。
-
checking permissions
线程正在检查服务器是否具有执行该语句所需的特权。
-
Checking table
线程正在执行表检查操作。
-
cleaning up
该线程已处理一个命令,并准备释放内存并重置某些状态变量。
-
closing tables
线程正在将已更改的表数据刷新到磁盘并关闭已使用的表。这应该是一个快速的操作。如果没有,请验证您没有完整的磁盘,并且磁盘使用率不是很高。
-
committing alter table to storage engine
服务器已就地完成 ALTER TABLE
并提交结果。
-
converting HEAP to MyISAM
线程正在将内部临时表从 MEMORY
表转换为磁盘 MyISAM
表。
-
copy to tmp table
线程正在处理一条ALTER TABLE
语句。在创建具有新结构的表之后但在将行复制到表中之前,将发生此状态。
-
Copying to group table
如果语句具有不同的条件ORDER BY
和 GROUP BY
条件,则行将按组排序并复制到临时表中。
-
Copying to tmp table
服务器正在复制到内存中的临时表。
-
Copying to tmp table on disk
服务器正在复制到磁盘上的临时表。临时结果集太大(请参见 第8.4.4节“ MySQL中的内部临时表使用”)。因此,线程将临时表从内存中更改为基于磁盘的格式,以节省内存。
-
Creating index
线程正在处理ALTER TABLE ... ENABLE KEYS
一个MyISAM
表。
-
Creating sort index
线程正在处理 SELECT
使用内部临时表解析的。
-
creating table
该线程正在创建一个表。这包括创建临时表。
-
Creating tmp table
该线程正在内存或磁盘上创建一个临时表。如果该表是在内存中创建的,但后来又转换为磁盘表,则该操作期间的状态将为Copying to tmp table on disk
。
-
deleting from main table
服务器正在执行多表删除的第一部分。它仅从第一个表中删除,并保存要用于从其他(参考)表中删除的列和偏移量。
-
deleting from reference tables
服务器正在执行多表删除的第二部分,并从其他表中删除匹配的行。
-
discard_or_import_tablespace
线程正在处理ALTER TABLE ... DISCARD TABLESPACE
or ALTER TABLE ... IMPORT TABLESPACE
语句。
-
end
这发生在结束,但的清理之前 ALTER TABLE
, CREATE VIEW
, DELETE
, INSERT
, SELECT
,或 UPDATE
语句。
-
executing
该线程已开始执行一条语句。
-
Execution of init_command
线程正在使用init_command
系统变量的值执行语句 。
-
freeing items
线程已执行命令。在此状态下完成的一些项目释放涉及查询缓存。此状态通常后跟cleaning up
。
-
FULLTEXT initialization
服务器正在准备执行自然语言的全文本搜索。
-
init
出现这种情况的初始化之前 ALTER TABLE
, DELETE
, INSERT
, SELECT
,或 UPDATE
语句。服务器在此状态下采取的操作包括刷新二进制日志,InnoDB
日志和一些查询缓存清除操作。
对于end
状态,可能发生以下操作:
-
更改表中的数据后删除查询缓存条目
-
将事件写入二进制日志
-
释放内存缓冲区,包括用于blob的缓冲区
-
Killed
有人KILL
向该线程发送了一条语句,下次检查kill标志时,它应该中止。在MySQL的每个主循环中都检查该标志,但是在某些情况下,线程死亡可能仍需要很短的时间。如果该线程被某个其他线程锁定,则杀死操作将在另一个线程释放其锁定后立即生效。
-
logging slow query
线程正在将一条语句写入慢速查询日志。
-
login
连接线程的初始状态,直到客户端已成功通过身份验证。
-
manage keys
服务器正在启用或禁用表索引。
-
NULL
此状态用于SHOW PROCESSLIST
状态。
-
Opening tables
线程正在尝试打开表。除非有什么阻止打开的步骤,否则这应该是非常快速的过程。例如,一个ALTER TABLE
或 LOCK TABLE
语句可以阻止打开表,直到该语句完成为止。还值得检查您的table_open_cache
价值是否足够大。
-
optimizing
服务器正在对查询执行初始优化。
-
preparing
此状态在查询优化期间发生。
-
preparing for alter table
服务器正在准备执行就地 ALTER TABLE
。
-
Purging old relay logs
该线程正在删除不需要的中继日志文件。
-
query end
此状态在处理查询之后但在该freeing items
状态之前发生 。
-
Reading from net
服务器正在从网络读取数据包。
-
Removing duplicates
查询的使用 SELECT DISTINCT
方式使得MySQL无法在早期阶段优化独特的操作。因此,MySQL需要一个额外的阶段来删除所有重复的行,然后再将结果发送给客户端。
-
removing tmp table
线程在处理SELECT
语句后正在删除内部临时表。如果没有创建临时表,则不使用此状态。
-
rename
线程正在重命名表。
-
rename result table
该线程正在处理一条ALTER TABLE
语句,已经创建了新表,并且正在重命名它以替换原始表。
-
Reopen tables
线程获得了该表的锁,但在获得该锁后注意到底层表结构已更改。它释放了锁,关闭了表,并试图重新打开它。
-
Repair by sorting
修复代码正在使用某种排序来创建索引。
-
Repair done
该线程已完成对MyISAM
表的多线程修复 。
-
Repair with keycache
修复代码正在通过密钥缓存一一创建密钥。这比慢得多Repair by sorting
。
-
Rolling back
线程正在回滚事务。
-
Saving state
对于MyISAM
表操作(例如修复或分析),线程会将新表状态保存到.MYI
文件头。状态包括行数, AUTO_INCREMENT
计数器和键分布等信息。
-
Searching rows for update
该线程正在执行第一个阶段,以在更新所有匹配的行之前找到它们。如果 UPDATE
更改了用于查找所涉及行的索引,则必须执行此操作。
-
Sending data
线程正在读取和处理SELECT
语句的行 ,并将数据发送到客户端。因为在此状态下发生的操作往往会执行大量磁盘访问(读取),所以它通常是给定查询生命周期中运行时间最长的状态。
-
setup
线程正在开始ALTER TABLE
操作。
-
Sorting for group
线程正在做某种排序以满足GROUP BY
。
-
Sorting for order
线程正在做某种排序以满足ORDER BY
。
-
Sorting index
该线程正在对索引页进行排序,以在MyISAM
表优化操作期间更有效地进行访问。
-
Sorting result
对于SELECT
语句,这与相似Creating sort index
,但对于非临时表。
-
statistics
服务器正在计算统计信息以制定查询执行计划。如果线程长时间处于此状态,则服务器可能是磁盘绑定的,正在执行其他工作。
-
System lock
从此线程已被调用mysql_lock_tables()
,并且线程状态尚未更新。这是一种非常普遍的状态,可能由于多种原因而发生。
例如,线程将要请求或正在等待表的内部或外部系统锁定。InnoDB
在执行期间等待表级锁定时, 可能会发生这种情况LOCK TABLES
。如果此状态是由对外部锁的请求引起的,并且您没有使用正在访问同一 表的多个mysqld服务器,则MyISAM
可以使用该--skip-external-locking
选项禁用外部系统锁 。但是,默认情况下禁用外部锁定,因此此选项可能无效。对于 SHOW PROFILE
,此状态表示线程正在请求锁定(不等待它)。
-
update
线程已准备好开始更新表。
-
Updating
线程正在搜索要更新的行,并且正在更新它们。
-
updating main table
服务器正在执行多表更新的第一部分。它仅更新第一个表,并保存要用于更新其他(参考)表的列和偏移量。
-
updating reference tables
服务器正在执行多表更新的第二部分,并从其他表更新匹配的行。
-
User lock
该线程将要请求或正在等待通过GET_LOCK()
调用请求的咨询锁定 。对于 SHOW PROFILE
,此状态表示线程正在请求锁定(不等待它)。
-
User sleep
该线程已调用 SLEEP()
。
-
Waiting for commit lock
FLUSH TABLES WITH READ LOCK
正在等待提交锁。
-
Waiting for global read lock
FLUSH TABLES WITH READ LOCK
正在等待全局读取锁定或read_only
正在设置全局 系统变量。
-
Waiting for tables
线程收到通知,表明表的基础结构已更改,因此需要重新打开表以获取新结构。但是,要重新打开该表,它必须等待,直到所有其他线程关闭了该表。
这张告示,如果另一个线程使用的地方 FLUSH TABLES
或有问题的表下面的语句之一: , , , , ,或 。 FLUSH TABLES tbl_name
ALTER TABLE
RENAME TABLE
REPAIR TABLE
ANALYZE TABLE
OPTIMIZE TABLE
-
Waiting for table flush
该线程正在执行FLUSH TABLES
并正在等待所有线程关闭其表,或者该线程收到有关表的基础结构已更改的通知,并且需要重新打开表以获取新结构。但是,要重新打开该表,它必须等待,直到所有其他线程关闭了该表。
这张告示,如果另一个线程使用的地方 FLUSH TABLES
或有问题的表下面的语句之一: , , , , ,或 。 FLUSH TABLES tbl_name
ALTER TABLE
RENAME TABLE
REPAIR TABLE
ANALYZE TABLE
OPTIMIZE TABLE
-
Waiting for lock_type
lock
服务器正在等待THR_LOCK
从元数据锁定子系统获取 锁或锁,其中 lock_type
指示了锁的类型。
此状态表示正在等待 THR_LOCK
:
这些状态指示等待元数据锁定:
-
Waiting for event metadata lock
-
Waiting for global read lock
-
Waiting for schema metadata lock
-
Waiting for stored function metadata lock
-
Waiting for stored procedure metadata lock
-
Waiting for table metadata lock
-
Waiting for trigger metadata lock
有关表锁定指示器的信息,请参见 第8.11.1节“内部锁定方法”。有关元数据锁定的信息,请参见第8.11.4节“元数据锁定”。
-
Waiting on cond
线程正在等待条件变为真的一般状态。没有特定的状态信息。
-
Writing to net
服务器正在将数据包写入网络。