mysql show processlist 命令详解

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

MYSQL线程状态说明

这个命令中最关键的就是state列,mysql列出的状态主要有以下几种:

状态 含义
After create 当线程创建表(包括临时表)
Analyzing 线程正在分析MYISAM的key分布
checking permissions 线程正在检查执行语句的权限
Checking table 线程正在执行表check操作
cleaning up 线程已经处理完一个命令然后开始准备释放内存和reset状态变量
closing tables 线程把改变的表数据flush到磁盘然后关闭使用的表。这个操作应该是很快的,如果这个状态长时间出现,要留意检查磁盘的状态。
converting HEAP to MyISAM 把一个内存中的临时表转换到磁盘上的MYISAM表
copy to tmp table 线程执行alter table语句。这个状态出现在新的表结构已经创建但数据还在拷贝到新表之前。
Copying to group table 如果一个语句的group by和order by 条件不同,数据通过group by来排序然后拷贝到临时表
Copying to tmp table 拷贝到内存中的临时表
Copying to tmp table on disk 如果临时表过大,服务器要把内存中的临时表拷贝到磁盘。
Creating index 对一个MYISAM 执行ALTER TABLE ... ENABLE KEYS
Creating sort index 线程通过执行一个临时表来执行select语句
creating table 线程正在创建表(包括临时表)
Creating tmp table 创建临时表(在内存或者磁盘)上,如果表一开始在内存中到后面太大,临时表就会转换到磁盘上,而且状态也会变成Copying to tmp table on disk
deleting from main table 服务器正在执行一个多表delete语句的第一部分,也就是从第一张表删除数据,并且保留行以及偏移量数据以用来删除其他表中的数据。
deleting from reference tables 服务器正在执行一个多表delete语句的二部分
discard_or_import_tablespace 线程正在执行ALTER TABLE ... DISCARD TABLESPACE 或者ALTER TABLE ... IMPORT TABLESPACE 语句.
end 这个状态出现在ALTER TABLECREATE VIEWDELETEINSERTSELECTUPDATE语句结束之后,但在清理以前。
executing 线程开始执行一个语句
Execution of init_command 线程在init_command系统变量中执行语句
freeing items 线程已经执行命令。一些释放
Flushing tables 这个线程执行了FLUSH TABLES,而且等待所有的线程关闭表
FULLTEXT initialization 服务器准备执行文本搜索
init
Killed 发送了kill 语句给这个查询。这个语句在下次检查kill标志的时候,这个语句就应该放弃掉
Locked 查询被其他的查询锁住了
logging slow query 线程正在把慢sql写到慢查询log文件中
NULL
login 直到线程授权成功以前都是这个状态
manage keys 服务器正在卡哭泣或者关闭表的索引
Opening tablesOpening table 线程正在打开表。这个操作是很快的,除非有其他原因阻止了打开操作,例如ALTER TABLE   LOCK TABLE
optimizing 服务器正在进行一个查询的初始阶段优化
preparing 正在进行查询优化
Purging old relay logs 线程删除不需要的relay log文件
query end 这个状态出现在处理完以后但在冻结item之前
Reading from net 服务器从网络读取包
Removing duplicates 查询使用了select distinct。mysq在发送数据到客户端之前需要一个额外的过程来删除重复的行
removing tmp table 在执行了select语句以后,线程正在删除内部的临时表
rename 线程正在重命名表
rename result table 线程正在执行一个alter table语句,而且已经创建了新表,对新表重命名来替换原始表。
Reopen tables 线程获取了一个表的锁。由于它已经得知它依赖的表结构已经发生了变化。线程需要释放锁、关闭表、然后尝试重新打开他。
Repair by sorting 修复代码通过排序来创建索引。
Repair done 线程完成了对一个myisam表的多线程修复。
Repair with keycache 修复代码正在通过key的缓存创建key。
Rolling back 线程正在回滚事物。
Saving state myisam的analysis和repair操作中,线程会把表的一些信息例如表的行数、AUTO_INCREMENT的计数器以及key的分布都保存到.MYI文件的头部
Searching rows for update 语句执行的第一个阶段,找到所有满足条件的行记录
Sending data 线程在读取和处理SELECT语句,发送数据到客户端。由于语句需要大量的磁盘访问,这个状态会在语句的整个生命周期中占据最长的一个状态。
setup 线程开始进行ALTER TABLE 语句
Sorting for group 线程正在为group by 执行排序
Sorting for order 线程正在为order by 执行排序
Sorting index 在myisam表的优化操作中,进行索引页的排序以便获得更好的访问性能。
Sorting result 对结果进行排序
statistics 服务器正在计算统计数据从而来生成一个执行计划。如果一个线程保留这个状态很长的时间,意味着服务器在执行其他的磁盘相关的工作。
System lock 线程正在请求和获取一个内部和外部锁。如果有这个状态
Table lock System Lock后的另一个线程状态。线程已经获取了一个外部锁,然后接下来要去获取一个内部表锁。
update 线程已经准备好去更新
Updating 现在正在找或者正在更新行
updating main table 服务器正在执行一个多表update语句,正在更新第一张表,保存行和偏移量以用来更新其他表。
updating reference tables 服务器正在执行一个多表update语句的第二部分,正在从其他表更新行
User lock 请求或者等待获取一个锁
User sleep 线程sleep
Waiting for release of readlock 等待一个全局的读锁
Waiting for tablesWaiting for table 线程获得提示依赖的表结构发生了改变,线程需要重新打开表来获取新的结构。但是,重新打开表是需要等待其他的线程关闭表。
Waiting on cond 线程正在等条件变成true
Waiting to get readlock 线程用FLUSH TABLES WITH READ LOCK语句,所以要获得一个全局的读锁,这个状态表示正在等这个锁。
Writing to net 服务器把包写到网络



本文转自 freeterman 51CTO博客,原文链接:http://blog.51cto.com/myunix/1742367,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
21天前
|
监控 关系型数据库 MySQL
Linux MySQL相关启动命令
【4月更文挑战第22天】
|
2月前
|
SQL 关系型数据库 MySQL
|
1月前
|
SQL 关系型数据库 MySQL
MySQL中主从复制的原理和配置命令
要原因包括提高性能、实现高可用性、数据备份和灾难恢复。了解两大线程( I/O 和 SQL)I/O线程:目的:I/O线程主要负责与MySQL服务器之外的其他MySQL服务器进行通信,以便复制(replication)数据。 功能: 当一个MySQL服务器作为主服务器(master)时,I/O线程会将变更日志(binary log)中的事件传输给从服务器(slave)。从服务器上的I/O线程负责接收主服务器的二进制日志,并将这些事件写入本地的中继日志(relay log)。 配置: 在MySQL配置文件中,你可以通过配置参数如和来启用二进制日志和指定服务器ID。log-bin server
MySQL中主从复制的原理和配置命令
|
5天前
|
SQL 关系型数据库 MySQL
mysql命令语句大全
mysql命令语句大全
8 0
|
7天前
|
关系型数据库 MySQL 数据库
MySQL集群 双主架构(配置命令)
MySQL集群 双主架构(配置命令)
|
7天前
|
Oracle 关系型数据库 MySQL
mysql相关命令
使用`mysql -u [username] -p`登录MySQL,例如`mysql -u root -p`,随后输入密码。连接成功后,显示MySQL欢迎信息、版本号和版权详情。要查看所有数据库,运行`SHOW DATABASES;`,列出包括`catbase`, `information_schema`, `mysql`, `performance_schema`, `publiccms`和`sys`在内的8个数据库。
14 1
|
14天前
|
关系型数据库 MySQL 测试技术
sysbench 对MySQL压测100分钟的命令
使用 `sysbench` 对 MySQL 数据库进行性能测试(压测)时,首先确保 `sysbench` 和 MySQL 数据库已经安装,并且你有一个测试数据库可以使用。下面是一个针对 MySQL 数据库进行压测的示例命令,测试时长为 100 分钟(6000 秒)。 在运行此命令之前,请确保以下内容: - 使用适当的数据库连接参数(主机、端口、用户名、密码、数据库名)。 - 根据你的需求调整测试参数(如并发数、线程数、事务数等)。 以下是一个示例命令,使用 `sysbench` 对 MySQL 数据库进行压测 100 分钟: ```shell sysbench --db-driver=m
|
14天前
|
SQL 关系型数据库 MySQL
【mysql】mysql命令使用大全,你想要的都在这里
【mysql】mysql命令使用大全,你想要的都在这里
|
1月前
|
关系型数据库 MySQL
如何解决cmd命令窗口无法运行mysql命令的问题
如何解决cmd命令窗口无法运行mysql命令的问题
13 0
|
2月前
|
存储 关系型数据库 MySQL