最近在维护数据库时,解析数据时候,数据一直不能入库。原因知道,是因为MySQL的事务产生了死锁,前几次我直接重启MySQL。
最近发现频繁的出现。所以找到一种方法。
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
查看事件比较久的事物。如何当前时间select sysdate();AM 10:07而事物开始的时间是:AM 9:50,显示是不正常的。根据这个事物的线程ID(trx_mysql_thread_id)。
执行命令:
kill 线程ID
查看正在锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
查看等待锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
本文介绍了MySQL中死锁产生的原因及解决办法。通过查询INNODB_TRX表来定位长时间运行的事务,并使用KILL命令结束这些事务。此外还提供了查询锁定和等待锁的事务的方法。
3万+

被折叠的 条评论
为什么被折叠?



