如果有死锁不早宕机或线上爆炸了
事实上非也,MySQL 很聪明,innodb_lock_wait_timeout
该参数是 MySQL InnoDB 存储引擎中一个重要的系统变量,用于控制事务在等
待锁定资源的时间超过设定值时的行为。具体来说,它规定了等待时间超过这个
值的事务将会自动回滚。
该参数默认值是 50s
所以不是你的数据库没有死锁,只是数据库本身帮你做了最极端的处理。
如何看懂死锁日志并分析死锁是如何造成的,是一个合格 DBA 必备的
技能。
好吧让我们展开分析死锁日志的讲解
一、锁日志配置
默认情况下,log_error 参数的值为空,此时 MySQL 会将错误信息输
出到标准错误流中,通常是屏幕或控制台。如果想将错误日志文件保存
到特定路径,可以将该参数设置为指定的文件名或路径。
另外其他配置项也会影响错误日志的输出,通常需做如下配置:
log_error = /var/log/mysql/mysql_error.log
log_error_verbosity=3 (注意:这个参数很坑,设置为 1、2 时不会记录普通的
死锁日志)
innodb_deadlock_detect=on
innodb_print_all_deadlocks=on
评论