程序bug或者慢sql都可能会造成死锁等问题,在这里整理了一些解决这类问题的方法
1.查看当前连接Id(线程Id)
select connection_id();
2.可以通过查看表information_schema.innodb_lock,获取锁的状态
select * from information_schema.innodb_locks;
3.查看系统参数锁超时时间 innodb_lock_wait_timeout
show variables like innodb_lock_wait_timeout;
4.查看未提交的事务
SELECT * from information_schema.INNODB_TRX
5.获取事物的描述
show engine innodb status\G
主要看TRANSACTIONS 这部分
如何解决未提交的事务
kill掉这个线程id号,让事务回滚
show processlist;
获取所有处理线程,找到相对应引起死锁的线程Id
kill Id