命令格式
SHOW [FULL] PROCESSLIST
SHOW PROCESSLIST显示哪些线程正在运行。您也可以使用mysqladmin processlist语句得到此信息。如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程(也就是,与您正在使用的MySQL账户相关的线程)。如果您不使用FULL关键词,则只显示每个查询的前100个字符。
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 TABLE , CREATE VIEW , DELETE ,INSERT , SELECT , UPDATE语句结束之后,但在清理以前。
|
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 tables , Opening 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 tables , Waiting for table
|
线程获得提示依赖的表结构发生了改变,线程需要重新打开表来获取新的结构。但是,重新打开表是需要等待其他的线程关闭表。 |
Waiting on cond |
线程正在等条件变成true |
Waiting to get readlock |
线程用FLUSH TABLES WITH READ LOCK语句,所以要获得一个全局的读锁,这个状态表示正在等这个锁。
|
Writing to net
|
服务器把包写到网络 |
注:本文转自 http://www.daniel-journey.com/archives/1000
分享到:
相关推荐
MySQL中的`SHOW PROCESSLIST`命令是一个非常实用的工具,它允许管理员查看当前正在运行的所有MySQL进程,包括查询、更新和其他数据库操作。这个命令对于诊断性能问题、监控活动以及管理资源至关重要。下面我们将深入...
MySQL 的慢日志配置查询和 Show Processlist 使用 MySQL 的慢日志配置查询和 Show Processlist 使用是 MySQL 中两个非常重要的概念,它们都是用于优化和 Troubleshooting MySQL 性能的关键工具。在这篇文章中,我们...
`SHOW PROCESSLIST`是MySQL管理工具中非常关键的一个命令,用于查看当前系统中所有线程的状态,帮助数据库管理员监控和诊断系统性能问题。这个命令在MySQL服务器资源占用过高时尤其有用,因为它能揭示哪些SQL语句...
MySQL的`show processlist`命令是数据库管理员用于监控数据库性能和诊断问题的重要工具。它能显示当前所有活动线程的信息,帮助我们理解哪些SQL语句可能导致性能瓶颈或资源消耗过大。下面我们将详细解析这个命令的...
show processlist:通过查看mysql的官网,可以发现,其主要是查询数据库中哪些线程正在执行,针对比较慢的线程(time的数值比较大的线程)我们可以将其kill掉。此外,show full processlist 返回的结果是实时变化的...
本文将详细阐述如何使用`SHOW PROCESSLIST`和`KILL`命令来监控和结束MySQL中的线程。 首先,我们来看如何使用`SHOW PROCESSLIST`命令。这个命令用于显示当前所有连接到MySQL服务器的线程状态,包括线程ID(thread_...
在PHP中,可以通过MySQLi或PDO_MySQL扩展来执行`SHOW PROCESSLIST`命令。例如: ```php $mysqli = new mysqli('localhost', 'username', 'password', 'database'); if ($mysqli->connect_error) { die(...
8. 显示系统中正在运行的所有进程:show processlist; 这条命令可以显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人...
- show processlist:显示MySQL系统中正在运行的所有进程,也就是当前正在执行的查询。一般用户可以看到他们自己的进程,如果用户拥有process权限,可以查看所有人的进程,包括密码。 4. 显示表的详细信息 - show...
mysql -u root -e "SHOW PROCESSLIST" | grep -i "Locked" >> locked_log.txt for line in `cat locked_log.txt | awk '{print $1}'` do echo "KILL $line ;" >> kill_thread_id.sql done mysql> source kill_...
8. `SHOW PROCESSLIST`: 显示当前正在执行的查询和事务,帮助诊断慢查询或并发问题。 9. `SHOW TABLE STATUS`: 提供关于数据库中每个表的详细信息,包括表的类型、大小、最后修改时间等。 10. `SHOW PRIVILEGES`: ...
在数据库管理和优化领域,了解系统运行状态至关重要,而`show processlist`命令正是MySQL服务器中用于查看当前正在执行的SQL查询和连接状态的重要工具。本文档主要讨论的是在dbproxy上实现类似功能的设计思路,即`...
`processlist`命令有两种使用方式,一种是在MySQL安装目录下的`bin`目录里运行`mysqladmin processlist`,另一种是在已登录的MySQL会话中输入`show processlist`。如果你拥有`SUPER`权限,那么可以看到所有线程的...
2. **执行`SHOW PROCESSLIST`命令**: 登录后,在MySQL提示符下输入`SHOW PROCESSLIST;`命令,可以查看当前所有正在运行的进程列表。这个命令返回的结果包含了所有正在执行中的进程的信息,包括进程ID(Id)、用户、...