MySQL:如何查找由事务锁定的行

时间:2016-12-16 15:38:24

标签: mysql transactions innodb mariadb database-deadlocks

示例:

START TRANSACTION;
UPDATE books SET printedCount=1000 WHERE id=5;

如何找到已打开的事务(或ID,这些行的主键)锁定表books的哪些行?我想跟踪这些信息以防止我的高负载Web应用程序出现死锁,如果已经锁定了可能受这些查询影响的行,可能会延迟一些更新查询。

2 个答案:

答案 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