MySql 5.6 排查DeadLock

查看日志发现出现

2022-06-18 23:09:08.590 [https-jsse-nio-443-exec-126] INFO  c.t.t.provider.controller.OrderMasterController - e->
### Error updating database.  Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction
### The error may involve com.ty.topingr.provider.dao.OrderMasterDao.updateOrderStatus-Inline
### The error occurred while setting parameters
### SQL: update ty_order_master      SET pay_time = ?,                       order_status = ?,                       third_party_pay_id = ?      where  out_trade_no = ?

以前未处理过这种问题,开始利用搜索引擎

  1. show engine innodb status 查询最近一次的死锁信息(相关的日志内容解释挺多的,基本了解一下就明白是哪两条sql发生了死锁)
  • 但是不适用,因为时间已经过去了1天才发现问题。
  1. 查看历史所有的死锁日志
  • show variables like 'innodb_print_all_deadlocks'; 检查是否开启记录(默认是关闭的,看了眼果然是关闭的,那只能先打开方便以后排查问题了)
  • 修改my.ini innodb_print_all_deadlocks=on 记得重启数据库
  • show variables like 'log_error'; 查看mysql错误日志存放路径
posted @ 2022-06-19 11:40  小马快跑3  阅读(142)  评论(0编辑  收藏  举报