- 查询死锁连接 SQL
select concat('KILL ',id,';') from information_schema.processlist a inner join information_schema.INNODB_TRX b on a.id = b.trx_mysql_thread_id where b.trx_tables_locked = 1
- 将死锁连接批量导出到 TXT 文本中
– 我使用的 MySql 是 5.7.6版本的,导出时,文件只能存储在 /var/lib/mysql-files/ 目录下,否则会提示 1029 错误代码
select concat('KILL ',id,';') from information_schema.processlist a inner join information_schema.INNODB_TRX b on a.id = b.trx_mysql_thread_id where b.trx_tables_locked = 1 into outfile /var/lib/mysql-files/all_dead_lock.txt
-
执行 TXT 文本,进入 MySql 命令行
– source /var/lib/mysql-files/all_dead_lock.txt -
注:
– 死锁后,锁住的数据是无法查询到的。解除死锁后,数据会还原。 -
死锁造成的原因:
– 对数据库的 update、delete 操作时,事务未超时未提交,再去删除时,就会造成死锁。