当前位置: 首页 > 科技观察

如何杀死卡住的MySQL线程?

时间:2023-03-14 23:46:59 科技观察

作为开发人员或数据库管理员,学习如何检查数据库的运行情况是必不可少的。MySQL线程卡死的原因有很多,比如死锁,但是不管是什么原因,我们发现问题后首先要做的就是解决问题,防止问题进一步恶化。那么,应该怎么办?查找线程有两种方法可以查看正在运行的线程。进入mysql/bin目录,执行mysqladminprocesslist连接MySQL,输入showprocesslist;查看命令,我们用Navicat登录localhost看一下,结果如下:结果中的每一行对应一个连接,每列的含义如下:Id:thread_id,threadid;user:用户,如果不是root,只能看到权限范围内的SQL;Host:可以看到源IP和端口,结合netstat或lsof命令可以快速定位进程;db:当前数据库实例;command:当前执行的命令,通常是sleep、query、connect;Time:当前状态持续多少秒;状态:当前状态;Info:当前语句;kill线程,执行killid命令杀死卡住的线程。线程卡顿的原因有很多,但大多数时候通常只有两种:锁竞争和查询慢