mysql查看锁表及杀进程

一.查看进程

登录mysql
mysql -uroot -ppassword
查看进程
mysql> show processlist;

各字段的含义:
1.id 该进程的标识;
2.user 显示当前用户
3.host 显示来源IP和端口
4.db 显示当前连接的数据库
5.command 显示当前连接的执行的命令,休眠 sleep ,查询 query ,连接 connect 
6.time 此这个状态持续的时间,单位是秒
7.state列 显示使用当前连接的sql语句的状态,很重要的列,详见下面state列的含义
8.info 显示sql语句,长sql可能显示不全
 
state列的含义:
1.analyzing 比如进行analyze table时 
2.checking table 线程正在执行表检查操作 
3.cleaning up 正准备释放内存 
4.closing tables 应该是一个快速的操作,如果不是这样的话,则应该检查硬盘空间是否已满或者磁盘io是否达到瓶颈 
5.copy to tmp table 线程正在处理一个alter table语句 
6.copying to tmp table 线程将数据写入内存中的临时表 
7.copying to tmp table on disk 线程正在将数据写入磁盘中的临时表。与tmp_table_size参数有关系 
8.creating sort index 线程正在使用内部临时表处理一个select操作 
9.fulltext initialization  服务器正准备进行自然语言全文索引 
10.sending data 线程正在读取和处理一条select语句的行,并且将数据发送至客户端,在此期间会执行大量的磁盘访问 
11.sorting index 线程正在对索引页进行排序 
12.updating 线程寻找更新匹配的行进行更新 
13.waiting for lock_type lock 等待各个种类的表锁 

当state列为waiting for lock_type lock时,表示某个SQL正在query导致别的SQL等待锁,需要根据id杀进程。

二.杀进程

1.杀单个进程
mysql> kill 127402;

2.杀多个进程,组装kill语句
select concat('kill ',id,';') from information_schema.processlist where user='root' and state='waiting for lock_type lock';
执行组装后的kill语句

三.其他有用命令

查看被锁的表
mysql> show open tables where in_use > 0;

查看当前的事务
mysql> select * from information_schema.innodb_trx;

查看被锁的事务
mysql> select * from information_schema.innodb_locks;

查看等锁的事务
mysql> select * from information_schema.innodb_lock_waits;

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值