mysql中processlist命令的详细说明

  介绍

这篇文章主要讲解了“mysql中processlist命令的详细说明”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql中processlist命令的详细说明”吧!

  processlist命令的输出结果显示了有哪些线程在运行,可以帮助识别出有问题的查询语句,两种方式使用这个命令。如果有超级权限,则可以看到全部的线程,否则,只能看到自己发起的线程(这是指,当前对应的MySQL帐户运行的线程)。
可以使用显示processlist命令进行输出,当然也可以使用以下语句来进行操作
mysql>从information_schema选择*。processlist限制10;
+ - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + +
| ID ,,| USER ,| HOST ,,,,,,,,,,,,,,,,| DB ,,,,,,,,,,| |命令时间| |状态信息|
+ - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + +
| 45730 | kkuser | 192.168.0.2:50753 ,| landray_kk_db | Sleep ,|,,,2 |,,,,,,零| |
| 45732 | kkuser | 192.168.0.2:50755 ,| landray_kk_db | Sleep ,|,,,3 |,,,,,,零| |
| 45487 | kkuser | 192.168.0.3:62093 | landray_kk_db | Sleep ,|,,11 |,,,,,,零| |
| 45739 | kkuser | 192.168.0.2:50762 ,| landray_kk_db | Sleep ,|,,,5 |,,,,,,零| |
| 46013 | kkuser | 192.168.0.4:50997 | landray_kk_db | Sleep ,|,,,2 |,,,,,,零| |
| 45763 | kkuser | 192.168.0.2:50787 ,| landray_kk_db | Sleep ,|,,,2 |,,,,,,零| |
| 46086 | kkuser | 192.168.0.4:51071 | landray_kk_db | Sleep ,|,,10 |,,,,,,零| |
| 46298 | kkuser | 192.168.0.5:50766 | landray_kk_db | Sleep ,|,,,5 |,,,,,,零| |
| 46300 | kkuser | 192.168.0.5:50768 | landray_kk_db | Sleep ,|,,,5 |,,,,,,零| |
| 46297 | kkuser | 192.168.0.5:50765 | landray_kk_db | | 150 | |选择a.deptid发送数据,连接a.deptname .....|
+ - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + +
10行组(0.01秒)
可以看的到,在最后一列有发送数据,经过分析,发现原语句如下:
选择a.deptid a.deptname, b.person_name, b.person_id从deptment a, b
a.deptid=b.deptid
通过解释发现该语句,人表的dept_id缺少索引,导致扫描走的全表,每次访问10万多条记录。
最后通过添加索引解决问题
下面我们就简单说一下processlist的各列说明:

  先简单说一下各列的含义和用途,
第一列,会话id,在mysql层面查杀使用的
第二列,用户列,访问的用户,这个命令就只显示你权限范围内的sql语句。
第三列,主机列,显示这个语句是从哪个ip的哪个端口上发出的。
第四列,db列,显示这个进程目前连接的是哪个数据库。
第五列,命令列,显示当前连接的执行的命令。
第六列,列,此这个状态持续的时间,单位是秒,如果后面有语句,要小心了,说明该语句有问题。
第七列,状态列,显示使用当前连接的sql语句的状态,很重要的列,后续会有所有的状态的描述,请注意,国家只是语句执行中的某一个状态,一个sql语句,已查询为例,可能需要经过复制tmp表,排序结果,发送数据等状态才可以完成,
第八列,信息列,显示这个sql语句,因为长度有限,所以长的sql语句就显示不全,但是一个判断问题语句的重要依据。

  下面重点介绍状态列各项值
这个命令中最关键的就是状态列,mysql列出的状态主要有以下几种:

正检查表在检查数据表(这是自动的)。

正关闭表在将表中修改的数据刷新到磁盘中,同时正在关闭已经用完的表。这是一个很快的操作,如果不是这样的话,就应该确认磁盘空间是否已经满了或者磁盘是否正处于重负中。
连接
复制从服务器正在连接主服务器。
复制tmp表>感谢各位的阅读,以上就是“mysql中processlist命令的详细说明”的内容了,经过本文的学习后,相信大家对mysql中processlist命令的详细说明这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

mysql中processlist命令的详细说明