Mysql进程管理
mysql> show processlist;
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+------+---------+------+-------+------------------+
| 7 | root | localhost | yy | Sleep | 154 | | NULL |
| 8 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+----+------+-----------+------+---------+------+-------+------------------+
2 rows in set (0.00 sec)
mysql> kill 7
-> ;
mysql> show processlist;
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+------+---------+------+-------+------------------+
| 8 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+----+------+-----------+------+---------+------+-------+------------------+
1 row in set (0.00 sec)
-----
每个与mysqld的连接都在一个独立的线程里运行,您可以使用SHOW PROCESSLIST语句查看哪些线程正在运行,并使用KILL thread_id语句终止一个线程。
KILL允许自选的CONNECTION或QUERY修改符:
· KILL CONNECTION与不含修改符的KILL一样:它会终止与给定的thread_id有关的连接。
· KILL QUERY会终止连接当前正在执行的语句,但是会保持连接的原状。
如果您拥有PROCESS权限,则您可以查看所有线程。如果您拥有SUPER权限,您可以终止所有线程和语句。否则,您只能查看和终止您自己的线程和语句。
您也可以使用mysqladmin processlist和mysqladmin kill命令来检查和终止线程。
注释:您不能同时使用KILL和Embedded MySQL Server库,因为内植的服务器只运行主机应用程序的线程。它不能创建任何自身的连接线程。
当您进行一个KILL时,对线程设置一个特有的终止标记。在多数情况下,线程终止可能要花一些时间,这是因为终止标记只会在在特定的间隔被检查:
· 在SELECT, ORDER BY和GROUP BY循环中,在读取一组行后检查标记。如果设置了终止标记,则该语句被放弃。
· 在ALTER TABLE过程中,在每组行从原来的表中被读取前,检查终止标记。如果设置了终止标记,则语句被放弃,临时表被删除。
· 在UPDATE或DELETE运行期间,在每个组读取之后以及每个已更行或已删除的行之后,检查终止标记。如果终止标记被设置,则该语句被放弃。注意,如果您正在使用事务,则变更不会被 回滚。
· GET_LOCK()会放弃和返回NULL。
· INSERT DELAYED线程会快速地刷新(插入)它在存储器中的所有的行,然后终止。
· 如果线程在表锁定管理程序中(状态:锁定),则表锁定被快速地放弃。
· 如果在写入调用中,线程正在等待空闲的磁盘空间,则写入被放弃,并伴随"disk full"错误消息。
· 警告:对MyISAM表终止一个REPAIR TABLE或OPTIMIZE TABLE操作会导致出现一个被损坏的没有用的表。对这样的表的任何读取或写入都会失败,直到您再次优化或修复它(不中断)。
转自 http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#load-index
mysql 有选择地kill process
show processlist / show full processlist 可以看到当前的process信息,
如果想要kill某些process,只能复制它的Id(thread id),然后kill, 每次只能kill一个。
如果要kill掉所有运行时间超过10秒的语句,这样搞起来就太麻烦了。
今天介绍个简单的办法,主要是通过INFORMATION_SCHEMA数据库来实现。
其中的PROCESSLIST表记录了process的信息。
找出运行时间超过10秒的process的ID。
SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE COMMAND = 'Query' AND TIME > 10;
这样似乎太莽撞了,有些进程不应该被kill的,比如负责replication的。。。
需要过滤一下:
SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE COMMAND = 'Query' AND TIME > 10
AND ID != CONNECTION_ID()
AND USER != 'root'
AND COMMAND != 'Binlog Dump'
AND STATE NOT REGEXP '(slave|relay|event)'
你也可以根据实际情况加入自己的过滤条件。
然后比较悲剧的是 kill 只能接受一个id做为参数。
只好生成所有的kill语句了:
mysql> SELECT CONCAT('KILL ',ID,';')
FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE USER = 'webs'
AND COMMAND = 'Query'
AND TIME > 10
INTO OUTFILE '/tmp/kill_list.txt';
然后再导入:
注意下面这行语句不是以分号结尾的
mysql> \. /tmp/kill_list.txt
Query OK, 0 ROWS affected (0.00 sec)
虽然现在智能多了,但是这样搞一回也还是比较麻烦的。
可以试试看 Percona Toolkit里面的 pt-kill, 祝你们好运
转自http://blog.csdn.net/hewy0526/article/details/8240710
Mysql进程管理的更多相关文章
- 【转】Mysql进程管理
mysql> show processlist; +----+------+-----------+------+---------+------+-------+--------------- ...
- mysql配置参数设置和进程管理
# For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.7/en/server-co ...
- MySQL日志管理
MySQL日志管理 2013年09月26日 ⁄ MySQL ⁄ 共 14266字 ⁄ 评论数 ⁄ 被围观 , views+ 一.日志类型: MySQL有几个不同的日志文件,可以帮助你找出mysqld内 ...
- Linux基础: 网络命令和进程管理
netstat lsof ps pstree pkill/kill (了解jenkins git,排查环境) 查询服务器之间是否有链接(netstat -an) 某个服务是否启动(了解服务对应的 ...
- MySQL 日志管理详解
大纲 一.日志分类 二.日志详解 注:MySQL版本,Mysql-5.5.32(不同版本的mysql变量有所不同) 一.日志分类 错误日志 查询日志 慢查询日志 二进制日志 中继日志 事务日志 滚动日 ...
- 初探Linux进程管理机制
转至:http://ixdba.blog.51cto.com/2895551/543737 一 .进程的概念和分类1.进程的概念 Linux是一个多用户多任务的操作系统.多用户是指多个用户可以在同一时 ...
- .Neter玩转Linux系列之五:crontab使用详解和Linux的进程管理以及网络状态监控
一.crontab使用详解 概述:任务调度:是指系统在某个时间执行的特定的命令或程序. 任务调度分类: (1)系统工作:有些重要的工作必须周而 复始地执行. (2)个别用户工作:个别用户可能希望执 行 ...
- Mysql的管理及使用
第1章 Mysql的管理 1.1 连接管理mysql mysql[options] #Linux或UNIX shell提示符(终端窗口) mysql --help #查看帮助信息 mysql --ve ...
- 进程管理工具htop/glances/dstat的使用
进程管理工具htop/glances/dstat的使用 Linux中进程的相关知识 1.什么是进程呢? 通俗的来说进程是运行起来的程序.唯一标示进程的是进程描述符(PID). 2.进程的分类 1)根据 ...
随机推荐
- 入坑第二式 golang入坑系列
史前必读: 这是入坑系列的第二式,如果错过了第一式,可以去gitbook( https://andy-zhangtao.gitbooks.io/golang/content/ )点个回放,看个重播.因 ...
- cn_office_professional_plus_2010_x86_515 安装激活方法解决方案64bit
一:首先选择 Office 2010 Toolkit.exe 右键 选择属性 –兼容性 然后 选择以管理员身份运行此程序 然后 双击 Office 2010 Toolkit.exe 需要安装的工具及 ...
- 剑指offer 面试42题
面试42题: 题目:连续子数组的最大和 题:输入一个整形数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n) 解题思路:在数组里从前 ...
- Shell字符串操作
@1:子串削除 ${string#substring} 从$string 的开头位置截掉最短匹配的$substring. ${string##substring} 从$string 的开头位置截掉最长 ...
- knockout注释标签----逻辑判断(学习笔记,欢迎拍砖)
使用knockout绑定数据时,需要进行判断处理 <!-- ko if:$root.ifHaveVideo($data) --> 这里不是被注释掉的代码 是逻辑判断代码 有效的 <d ...
- image has dependent child images
在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器(哪怕是已经停止的容器),否则无法删除该镜像. 停止容器 # docker stop $(docker ps -a | grep ...
- python调用php函数
由于php不支持多线程,所以想借助python搞一个.1.import subprocessimport time#Simple caller, disguard outputmethod=" ...
- 对称加密,API加密
用于API加密,双方约定好signature_key对请求的参数进行处理 处理步骤如下 把请求的数据生成为key=>value的形式,然后拼接生成arg_key arg_key加上双方约定的si ...
- Matlab命令合集 妈妈再也不用担心我不会用matlab了
matlab命令 一.常用对象操作:除了一般windows窗口的常用功能键外.1.!dir 可以查看当前工作目录的文件. !dir& 可以在dos状态下查看.2.who 可以查看当前工作空间变 ...
- Hibernate多对多关联
多对多关联: 示例:Teacher和Student,一个Teacher可以教很多student,一个Student也可以被很多teacher教 多对多单向关联 Teacher知道自己教了哪些学生, ...