整理东京服务器数据库死锁的排查与解决实战。
数据库死锁会导致事务失败。以下是排查实战。
一、现象 - 事务报死锁错误 - 部分操作卡住 - 日志出现 deadlock
二、定位 1) 查看死锁日志(show engine innodb status) 2) 定位参与死锁的事务和 SQL 3) 分析加锁顺序 4) 复现问题
三、常见原因 1) 加锁顺序不一致 2) 大事务持锁时间长 3) 缺少索引导致锁范围大 4) 间隙锁冲突 5) 并发高
四、解决 - 统一加锁顺序 - 拆分大事务 - 补索引缩小锁范围 - 降低隔离级别(评估后) - 短事务快提交
五、预防 1) 死锁监控 2) 慢事务排查 3) 索引优化 4) 代码审查
六、处理策略 - 捕获死锁自动重试 - 减少事务粒度
总结:死锁要分析加锁顺序和锁范围,统一顺序、拆事务、补索引来减少。