示例:
START TRANSACTION;
UPDATE books SET printedCount=1000 WHERE id=5;
如何找到已打开的事务(或ID,这些行的主键)锁定表books
的哪些行?我想跟踪这些信息以防止我的高负载Web应用程序出现死锁,如果已经锁定了可能受这些查询影响的行,可能会延迟一些更新查询。
答案 0 :(得分:1)
SHOW ENGINE INNODB STATUS;
不幸的是,没有办法捕获所有的死锁。相反,定期运行它以查看是否存在正在进行的死锁;然后处理那个案子。
答案 1 :(得分:0)
从MySQL 8.0.1开始,这在performance_schema中进行了检测:
SELECT * from performance_schema.data_locks;
请参阅 https://dev.mysql.com/doc/refman/8.0/en/data-locks-table.html