赞
踩
mysql> show full processlist
或者
mysql> show processlist;
+---------+-----------+-------------------+----------+-------------+---------+------------------------+---------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+---------+-----------+-------------------+----------+-------------+---------+------------------------+---------------------------------------+
| 3672856 | abce | 192.168.5.1:38311 | abce | Query | 0 | Sending data | select count(1) from (select
+---------+-----------+-------------------+----------+-------------+---------+------------------------+---------------------------------------+
说明:
ID:
id标识。kill用户的时候有用
User:
当前连接的用户
Host:
当前用户连接是从哪个ip和port连接过来的
db:
数据库名
Command:
连接状态,一般是休眠(sleep),查询(query),连接(connect)
Time:
连接持续的时间,单位是秒
State:
当前sql语句的状态
Info:
sql语句内容
其中state的状态十分关键,下表列出state主要状态和描述:
状态
说明
建议
After create
当线程创建一个表(包括临时表),创建函数结束时的状态。
即使因为某些原因创建失败,也会显示。
Analyzing
线程正在估算myisam表的键的分布
checking permissions
权限检查
Checking table
检查表
cleaning up
命令结束,准备释放内存和重置状态变量
closing tables
刷新表数据到磁盘并关闭表。
这个状态一般比较快,否则就该查看一下磁盘的使用了
converting HEAP to MyISAM
将内部内存临时表转成成磁盘上的myisam表
copy to tmp table
线程在执行alter table命令。
发生在表结构已经修改,但是数据还没有拷贝回去
建议:凌晨执行
altering table
原地执行alter table命令
Copying to tmp table
从内存将数据拷贝到临时表
建议:创建索引
Copying to group table
如果语句的order by和group by列不同,行被分组排序并拷贝到临时表
Copying to tmp table on disk
拷贝到磁盘上的临时表。
临时结果集太大,因为线程要将内存中的数据拷贝到磁盘上以便节省内存。
建议:创建索引,加大tmp_table_size/max_heap_table_size
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 engine
原理alter table结束,提交结果
deleting from main table
在执行多表删除的第一部分。
只是从第一个表中删除,会保存列和偏移量用于删除其他表
deleting from reference tables
多表删除的第二部分,从其他表删除匹配的行
discard_or_import_tablespace
线程在处理alter table … discard tablespace或alter table … import tablespace
freeing items
线程已经执行完一个命令。释放一些items
FULLTEXT initialization
准备执行全完检索
Removing duplicates
查询使用了distinct
removing tmp table
移除内部临时表
Reading from net
server端正通过网络读取客户端发送过来的请求
建议:减小客户端发送数据包大小,提高网络带宽/质量
Sending data
从server端发送数据到客户端,也有可能是接收存储引擎层返回的数据,再发送给客户端,数据量很大时尤其经常能看见
建议:通过索引或LIMIT,减少需要扫描的数据量
Sorting result
正在对结果进行排序,类似Creating sort index,不过是正常表,而不是在内存表中进行排序
建议:创建索引
Statistics
进行数据统计以便解析执行计划,如果状态比较经常出现,有可能是磁盘IO性能很差
建议:查看当前io性能状态,例如iowait
System lock
正在等待系统级锁
建议:关闭外部锁skip-external-locking(已经默认关闭了)
Waiting for global read lock
通常是FLUSH TABLES WITH READ LOCK整等待全局读锁
Waiting for tables,
或Waiting for table flush
通常是因为FLUSH TABLES, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE, OPTIMIZE TABLE等需要刷新表结构并重新打开
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。