批量kill mysql数据库大量sleep状态进程
MySQL数据库卡顿 批量kill Sleep进程 优化数据库
·
当数据库突然变得很卡的时候一般都是因为数据库突然访问量激增或有大量进程阻塞,这个时候我们可以通过下面的命令查看这些进程:
show processlist;
查询结果如下:
里面Command状态是Sleep的就是休眠的进程,后面那个Time是休眠时间,单位是秒,我们要做的就是用kill命令杀死这些进程,但是一般这种进程很多,一个个的kill要很久,所以可以用下面的SQL一次解决:
SELECT CONCAT('KILL ', id, ';') AS kill_statement
FROM information_schema.processlist
WHERE command = 'Sleep' AND time > 50;
后面加了AND time > 50是因为不是所有休眠进程都是有问题的,我们尽量关闭哪些休眠时间很长的
执行结果如下:
我们Ctrl A+Ctrl C复制出来放到上面执行一下就可以了一次性全部杀死了。
还有个命令也是在数据库突然变卡时会用到的:
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
这个查询会返回当前正在运行的InnoDB事务的信息,有些时候某些事务阻塞也会导致数据库突然很卡,同样的我们kill掉就可以了。
更多推荐
已为社区贡献1条内容
所有评论(0)