启动 mysql ,输入 show processlist;
id ,一个标识,你要 kill 一个语句的时候很有用。
user 列,显示单前用户,如果不是 root ,这个命令就只显示你权限范围内的 sql 语句。
host 列,显示这个语句是从哪个 ip 的哪个端口上发出的。可以用来追踪出问题语句的用户。
db 列,显示这个进程目前连接的是哪 command 列,显示当前连接的执行的命令,一般就是休眠( sleep ),查询( query ),连接( connect )。
time 列,此这个状态持续的时间,单位是秒。
state 列,显示使用当前连接的 sql 语句的状态,很重要的列,后续会有所有的状态的描述,请注意, state 只是语句执行中的某一个状态,一个 sql 语句,已查询为例,可能需要经过 copying to tmp table , Sorting result , Sending data 等状态才可以完成
info 列,显示这个 sql 语句,因为长度有限,所以长的 sql 语句就显示不全,但是一个判断问题语句的重要依据。
1 、执行show processlist;查看正运行的SQL
SHOW PROCESSLIST;
2 、执行kill 加上对应SQL执行ID
KILL 120;
3 、再次show processlist;查看结果
SHOW PROCESSLIST;
也有批量执行的方法:
如果要批量杀掉某些正在执行的语句,可按如下两种方法进行:
方法一、
select concat('kill ',id,';') from information_schema.processlist where user='root';
+------------------------+
| concat('kill ',id,';')
+------------------------+
| kill 3101;
| kill 2946;
+------------------------+
2 rows in set (0.00 sec)
mysql> select concat('kill ',id,';') from information_schema.processlist where user='root' into outfile '/tmp/a.txt';
query ok, 2 rows affected (0.00 sec)
mysql> source /tmp/a.txt;
query ok, 0 rows affected (0.00 sec)
-- use information_schema;
-- show processlist;
或者:
-- select * from information_schema.`PROCESSLIST` where info is not null;