我想知道是否有一种方法可以在innodb中记录导致mysql数据库死锁的每个事务的那一刻就将其存储在一个单独的表中?
vngu2lb81#
在版本5.5.30中, innodb_print_all_deadlocks 变得可用。设置为 ON ,但请注意日志文件(可能 error.log )它使用的磁盘可能会乱七八糟。减少死锁数量的技巧:加快交易速度。将dml语句移出事务(如果这样做是可以的)。如果有 IN 或者 OR 在某些陈述中(如 DELETEing 几行),对它们进行排序。最后一个可能会将死锁转换为“lock\u wait\u timeout”,其中一个事务会静默地暂停,直到另一个事务完成。
innodb_print_all_deadlocks
ON
error.log
IN
OR
DELETEing
1条答案
按热度按时间vngu2lb81#
在版本5.5.30中,
innodb_print_all_deadlocks
变得可用。设置为ON
,但请注意日志文件(可能error.log
)它使用的磁盘可能会乱七八糟。减少死锁数量的技巧:
加快交易速度。
将dml语句移出事务(如果这样做是可以的)。
如果有
IN
或者OR
在某些陈述中(如DELETEing
几行),对它们进行排序。最后一个可能会将死锁转换为“lock\u wait\u timeout”,其中一个事务会静默地暂停,直到另一个事务完成。