MySQL show processlist 2 Command State

 

  • 线程的 Command 值

 

Binlog Dump这是主库上的一个线程,用于将二进制日志内容发送到 从库
Change user线程正在执行更改用户操作
Close stmt线程正在关闭一个预编译好的语句
Connect从库线程已经连接到主库
Connect Out从库正在连接到主库
Create DB线程正在执行一个建库操作
Daemon这个是 server 内部线程,不是客户端连接的线程
Debug线程正在生成调试信息
Delayed insert是一个延迟插入处理程序的线程
Drop DB线程正在执行 drop database 操作
Error 
Execute线程正在执行一个预编译好的语句
Fetch线程正在执行语句并从中获取结果集
Field List线程正在检索表列的信息
Init DB线程正在选择默认数据库
kill线程正在杀死其他线程
Long Data线程在执行语句并从中检索并返回长字段(大字段)类型 的数据结果集
Ping线程正在处理服务器 ping 请求
Prepare线程正在执行预编译一个语句
Processlist线程正在生成有关 server 线程的信息
Query线程正在执行查询语句
Quit线程正在终止
Refresh线程正在刷新表,日志或高速缓存,或重置状态变量或复制 server 信息
Register Slave线程正在主库上注册从库
Reset stmt线程正在重置预编译语句
Set option线程正在设置或重置客户端语句执行选项
Shutdown线程正在执行关闭 server
Sleep线程正在等待客户端向其发送一个新语句请求
Statistics线程正在生成 server 状态信息
Table Dump线程正在将表内容发送到从库
Time当前未使用
  

 

  • 普通线程状态 非内部机制创建的线程

 

After create当线程创建一个表完成时,包括内部临时表,会出现这种状态,如果建表失败也会出现
Analyzing线程正在计算 MyISAM 表的 key 分布 ANALYZE TABLE
checking permissions正在 server 中检查线程是否具有执行 语句所需的权限
Checking table线程正在执行表检查操作
cleaning up线程已经执行完成了一个命令,并准备释放所占用 的内存和重置某些状态变量
closing tables线程正在将表发生更改的数据刷新到磁盘并关闭 表。通常情况下这个操作很快。否则,请检查磁盘空间是否满 了,或者磁盘的负载是否比较高
converting HEAP to MyISAM线程正在将内部临时表从 MEMORY 引擎表转换为磁盘 MyISAM 引擎的临时表
copy to tmp table:线程正在执行 ALTER TABLE 语句。此状态 发生在新结构的表已经创建好之后,执行 copy 旧表数据到新表 中之前出现,这里对于线程的具体执行详情,可以使用 performance_schema 库来获取有关 copy 操作的进度信息
Copying to group table如果语句使用了不同的 ORDER BY 和 GROUP BY 条件列,则按照 group by 对这些行数据进行排 序,并将排序结果复制到临时表
Copying to tmp tableserver 正在复制数据到内存临时表
altering tableserver 正在执行 in-place 算法的 ALTER TABLE 的过程
Copying to tmp table on diskserver 正在复制数据到磁盘临 时表。因为临时结果集太大,所以,线程正在将内存临时表转换 为基于磁盘的临时表,以节省内存
Creating index线程正在执行一个 MyISAM 表的 ALTER TABLE ... ENABLE KEYS 语句
Creating sort index线程正在执行 SELECT 且使用到了内部临 时表
creating table线程正在创建表。包括创建临时表时也会使用 此状态
Creating tmp table线程正在内存或磁盘上创建一个临时表。 如果表在内存中创建,但后来被转换为磁盘表,则该操作期间的 状态将为“Copying to tmp table on disk”
committing alter table to storage engineserver 已执行完 成 in-place 算法的 ALTER TABLE 语句,正在提交
deleting from main tableserver 正在执行多表删除语句中的 第一部分。看到这个状态表示正在从第一个表中删除,并保存后 续用于删除其他表的列数据和偏移量
deleting from reference tablesserver 正在执行多表删除语 句的第二部分,从其他表(非第一个表)中删除匹配的行
discard_or_import_tablespace线程正在执行 ALTER TABLE ... DISCARD TABLESPACE 或 ALTER TABLE ... IMPORT TABLESPACE 语句
end这发生在语句执行结束时,但在清除 ALTER TABLE, CREATE VIEW,DELETE,INSERT,SELECT 或 UPDATE 语句 之前出现该状态
executing线程正在执行语句中
Execution of init_command线程正在执行一个初始化系统变 量的语句
freeing items线程已经执行完成了一个命令。释放一些涉及到 query cache 状态的 items。这种状态后通常紧随 cleaning up 状态之后
FULLTEXT initializationserver 正在准备执行自然语言全文搜 索
init:这在 ALTER TABLE,DELETE,INSERT,SELECT 或 UPDATE 语句初始化之前发生的状态。server 在此状态下执行的 操作包括刷新二进制日志,InnoDB 日志和一些查询缓存清理操 作。对于这个状态结束时,可能会有如下一些操作:
* 当表中的数据更改后删除查询缓存条目
* 将事件写入二进制日志
* 释放内存缓冲区,包括 blob
Killed向线程发起一个 kill 操作,线程应该执行终止操作。在 MySQL 的每个主循环中检查线程的 kill 标志,但在某些情况下, 杀死线程可能只需要很短的时间。但如果被 kill 的线程被其他线 程锁定,则需要等待其他线程释放锁之后,kill 命令才会生效并 执行
logging slow query线程正在向慢查询日志写一条语句
login连接线程的初始状态,直到客户端成功通过身份验证
manage keysserver 正在启用或禁用表索引
NULL此状态用于 SHOW PROCESSLIST 语句
Opening tables线程正尝试打开一个表。打开表操作应该非常 快,除非打开操作被阻止。例如,ALTER TABLE 或 LOCK TABLE 语句可以防止打开表,直到该语句完成。另外也可能是 table_open_cache 不够大导致不能打开表
optimizingserver 正在对查询执行初始优化
preparing此状态发生在查询优化期间
Purging old relay logs线程正在删除不需要的中继日志文件 o query end:此状态出现在执行查询语句之后但在释放该查询语 句相关状态 items 之前
Reading from netserver 正在从网络读取数据包。在 MySQL 5.7.8 之后该状态叫做“Receiving from client ”
Receiving from clientserver 正在从客户端读取数据包。在 MySQL 5.7.8 叫做“Reading from net ”
Removing duplicates查询使用 SELECT DISTINCT 语句时, 使 MySQL 无法在早期阶段优化掉 distinct 操作。因此,MySQL 需要一个额外的阶段来删除所有重复的行,然后将结果发送到客 户端
removing tmp table线程在 SELECT 语句执行完成后,正在删 除内部临时表。如果 SELECT 语句未创建临时表,则不会出现此 状态
rename线程正在执行 rename 语句重命名表
rename result table线程正在执行 ALTER TABLE 语句重命名 表,已经创建完成新表,并正在使用新表替换旧表名称
Reopen tables线程获得了表锁,但是获得锁后,发现基础表 结构已经被改变了。于是释放表锁,并关闭表,尝试重新打开表
Repair by sorting修复代码正在使用排序来创建索引
preparing for alter tableserver 正在准备执行 in-place 算法 的 ALTER TABLE 语句
Repair done该线程已完成 MyISAM 表的多线程修复
Repair with keycache修复代码正在使用通过 key cache 逐个 创建 key 的方法修复索引。这比通过排序索引修复的方法慢得多
Rolling back线程正在回滚事务
Saving state对于 MyISAM 表操作(如修复或分析),线程正 在将新表状态保存到.MYI 文件头。状态包括:表数据行数, AUTO_INCREMENT 计数器和 key 分布之类的信息
Searching rows for update线程正在进行第一阶段查找所有 匹配的行,然后再更新它们。如果 UPDATE 正在更改用于查找涉 及的行的索引,则必须先把 update 满足匹配的行先查找出来
Sending data线程正在读取和处理 SELECT 语句产生的数据 行,并将数据发送到客户端。因为在此状态期间发生的操作可能 产生大量的磁盘访问(读取),所以它通常是给定查询的生存期 内最长的运行状态
Sending to clientserver 正在向客户端写入数据包。在 MySQL 5.7.8 之前叫做“Writing to net”
setup线程正在执行 ALTER TABLE 操作
Sorting for group线程正在执行一个 GROUP BY 排序操作
Sorting for order线程正在执行一个 ORDER BY 排序操作
Sorting index线程正在排序索引页面,以便在 MyISAM 表优 化操作期间实现更高效的访问
Sorting result对于 SELECT 语句,这类似于“Creating sort index”状态,但是针对于非临时表
statisticsserver 正在计算统计信息以优化查询执行计划。如果 一个线程在这个状态很长一段时间,server 可能是磁盘执行其他 工作而阻塞了统计信息的操作,也有可能发生了锁等待。
System lock线程调用了 mysql_lock_tables(),线程状态从未 更新过。这是一个非常常见的状态,出现该状态的原因有很多。 例如,线程将请求或正在等待表的内部或外部系统锁定。当 InnoDB 在执行 LOCK TABLES 期间等待表级锁时,可能会发生 这种情况。如果此状态是由外部锁请求引起的,如果您不使用多 个 mysqld 服务器访问同一 MyISAM 表,则可以使用--skipexternal-locking 选项禁用外部系统锁。但是,默认情况下外部 锁定是禁用的,因此此选项可能无效。对于 SHOW PROFILE, 此状态表示线程正在请求锁定(不等待)
update线程准备开始更新表
Updating线程搜索且正在更新数据行
updating main tableserver 正在执行多表更新语句的第一部 分。该状态表示正在更新第一个表,并保存列值和偏移量以用于 更新其他(引用)表
updating reference tablesserver 正在执行多表更新语句的第 二部分,更新其他表的匹配行
User lock线程将请求或正在等待通过 GET_LOCK() 调用请求 的建议锁。对于 SHOW PROFILE,此状态表示线程正在请求锁 定(无需等待)
User sleep线程已调用 SLEEP() 调用
Waiting for commit lockFLUSH TABLES WITH READ LOCK 语句正在获取提交锁
Waiting for global read lockFLUSH 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 lockserver 正在等待获得一个 THR_LOCK 锁或者从元数据锁定子系统中获取一个 MDL 锁,其 中 lock_type 表示正在等待获得的 MDL 锁的类型,THR_LOCK 只有一种(Waiting for table level lock),MDL 锁有如下几 种:
* 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
Waiting on cond线程正在等待条件变为 true 的通用状态。没 有特定的状态信息可用
Writing to netserver 正在向网络写入数据包。从 MySQL 5.7.8 之后叫做“Sending to client”

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值