编程那点事编程那点事

专注编程入门及提高
探究程序员职业规划之道!

mysql show processlist详解

在命令行窗口执行 show processlist,一般会得到类似如下结果

Id User Host db Command Time State Info
2 root localhost:52899 dev Sleep 20    
3 root localhost:52906 dev Query 0 starting show processlist

使用show processlist可以查看连接的线程个数,来观察是否有大量线程处于不正常的状态或者其他不正常的特征。

show processlist 是显示用户正在运行的线程,需要注意的是,除了 root 用户能看到所有正在运行的线程外,其他用户都只能看到自己正在运行的线程,看不到其它用户正在运行的线程。除非单独个这个用户赋予了PROCESS 权限。

默认情况下,show processlist 命令只列出前100条,如果想全列出请使用show full processlist。

了解了以上信息后,我们来解释下,查询结果各列的意思:

id表示session id

user表示操作的用户

host表示操作的主机

db表示操作的数据库

command表示当前状态

info表示详细的sql语句

time表示相应命令执行时间

state表示命令执行状态

其中 command 常见的状态有以下几种:

sleep:线程正在等待客户端发送新的请求

query:线程正在执行查询或正在将结果发送给客户端

locked:在mysql的服务层,该线程正在等待表锁

analyzing and statistics:线程正在收集存储引擎的统计信息,并生成查询的执行计划

Copying to tmp table:线程正在执行查询,并且将其结果集都复制到一个临时表中

sorting result:线程正在对结果集进行排序

sending data:线程可能在多个状态之间传送数据,或者在生成结果集或者向客户端返回数据

不过就现在来讲,这个命令其实还是很少用到的,因为现在开发基本都有数据库连接池来管理连接数据库了。

未经允许不得转载: 技术文章 » 数据库 » mysql show processlist详解