作为数据库肯定会有大量的select查询我们的数据库,而在实际生产环境中往往应为sql语句写的子查询略多或同大量的查询并发在一台数据库上都会造成堵塞,此时就要我们进数据库去清理大量造成堵塞的select的线程了,而造成堵塞有一个很明显的现象会有很多的select卡在哪里,我们可以用

mysql> show full processlist;

的方式查看当前是否有很多的select的线程在,如果非常多,并且很长一段时间没有查询结束就需要去kill掉这些Waiting for table level lock的线程,在非常多的select下这个是一个非常缓慢的过程,所以我们可以用这样的简单脚本去循环kill这些大量的select

#!/bin/bash
for i in `mysql -Bse 'show full processlist;' | grep -i select |grep -i "Waiting for table level lock" | awk  '{print $1}'`
do
        mysql -Bse "kill  $i"
done