<返回更多

MySQL解除正在死锁的状态有两种方法

2022-09-07  今日头条  198兜兜里有糖
加入收藏

第一种

#1.查询是否锁表

MySQL> show OPEN TABLES where In_use > 0;

#2.查询进程(如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程)

mysql> show full processlist;

#3.杀死进程id(就是上面命令的id列)

[linux-command] kill id;

第二种

#1.查看正在锁的事务

mysql> select * from information_schema.innodb_trx;

#2.杀死进程id(就是上面命令的trx_mysql_thread_id列)

mysql> show processlist;

[linux-command] kill 420821

#3.查找执行事务的客户端请求的SQL线程

mysql> select * from information_schema.processlist where id=76613;

#4.通过SQL线程,找到应用程序的IP地址以及端口192.168.10.1:23452

[linux-command].NETstat -nlatp |grep 23452

[linux-command] ps -eaf|grep 12059

其它关于查看死锁的命令

#1:查看当前的事务

select * from information_schema.innodb_trx;

#2:查看当前锁定的事务

select * from information_schema.innodb_locks;

#3:查看当前等锁的事务

select * from information_schema.innodb_lock_waits;

#4:查看锁表情况

select r.trx_id as waiting_trx_id,

r.trx_mysql_thread_id as waiting_thread,

r.trx_query as waiting_query,

b.trx_id as blocking_trx_id,

b.trx_mysql_thread_id as blocking_thread,

b.trx_query as blocking_query,

(UNIX_TIMESTAMP() - UNIX_TIMESTAMP(b.trx_started)) as block_time

from information_schema.innodb_lock_waits w

inner join information_schema.innodb_trx b on b.trx_id = w.blocking_trx_id

inner join information_schema.innodb_trx r on r.trx_id = w.requesting_trx_id;

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>