因为我在那里看到了很多进程,"time“列显示了所有进程的较大值。
发布于 2009-12-15 06:15:26
你需要一个接一个地杀死他们,MySQL没有任何大规模的kill命令。您可以用任何语言编写脚本,例如,在PHP中,您可以使用如下内容:
$result = mysql_query("SHOW FULL PROCESSLIST");
while ($row=mysql_fetch_array($result)) {
$process_id=$row["Id"];
if ($row["Time"] > 200 ) {
$sql="KILL $process_id";
mysql_query($sql);
}
}
发布于 2012-03-30 14:55:58
批量杀操作可节省时间。在MySql中执行此操作:
运行这些命令
mysql> select concat('KILL ',id,';') from information_schema.processlist
where user='root' and time > 200 into outfile '/tmp/a.txt';
mysql> source /tmp/a.txt;
---------edit------------
如果您不想存储在文件中,请存储在variable
中
只需在命令提示符下运行即可
> out1=$(mysql -B test -uroot -proot --disable-column-names -e "select concat('KILL ',id,';') from information_schema.processlist where user='root' and time > 200;")
> out2= $(mysql -B test -uroot -proot --disable-column-names -e "$out1")
发布于 2012-05-16 05:02:19
我还搜索了如何通过MySQL解析命令SHOW PROCESSLIST,并以Shell中的一行代码结束:
mysqladmin processlist -u <USERNAME> -p<PASSWORD> | \
awk '$2 ~ /^[0-9]/ {print "KILL "$2";"}' | \
mysql -u <USERNAME> -p<PASSWORD>
您可以在awk命令之前运行grep来过滤特定的数据库名称。
https://stackoverflow.com/questions/1903838
复制相似问题