Rol*_*DBA 17
MySQL 5.5.30 中引入了一个设置:innodb_print_all_deadlocks
启用此选项后,有关 InnoDB 用户事务中所有死锁的信息将记录在 mysqld 错误日志中。否则,使用 SHOW ENGINE INNODB STATUS 命令,您只会看到有关最后一个死锁的信息。偶尔的 InnoDB 死锁不一定是问题,因为 InnoDB 会立即检测到该情况,并自动回滚其中一个事务。如果应用程序没有适当的错误处理逻辑来检测回滚并重试其操作,您可以使用此选项来解决死锁发生的原因。大量死锁可能表明需要重构对多个表发出 DML 或 SELECT ... FOR UPDATE 语句的事务,以便每个事务以相同的顺序访问表,从而避免死锁情况。
只需将此设置添加到 my.cnf
[mysqld]
innodb_print_all_deadlocks = 1
Run Code Online (Sandbox Code Playgroud)
或者
[mysqld]
innodb_print_all_deadlocks = on
Run Code Online (Sandbox Code Playgroud)
您不必重新启动 mysql。只需登录mysql并运行
mysql> SET GLOBAL innodb_print_all_deadlocks = 1;
or
mysql> SET GLOBAL innodb_print_all_deadlocks = 'ON';
Run Code Online (Sandbox Code Playgroud)
这个设置对我来说也是新的。
试一试,告诉我们你的想法!!!
| 归档时间: |
|
| 查看次数: |
20578 次 |
| 最近记录: |