# 如何排查数据库死锁？

Canonical URL: https://help.iagenify.com/zh/faqs/databases/how-should-i-investigate-a-database-deadlock

[← 返回数据库常见问题](https://help.iagenify.com/zh/faqs/databases)

帮助中心 · 常见问题 数据库 1 分钟阅读
# 如何排查数据库死锁？
死锁是指事务各自持有对方需要的资源，彼此等待。许多数据库引擎会检测循环并中止其中一个事务；应用应妥善处理错误，并仅在操作可安全重复时重试。
IaGenify
数据库

## 收集死锁详情
使用数据库死锁报告或诊断日志找出涉及的语句、表、索引和锁模式。比较事务访问资源的顺序；单纯增加超时无法打破循环等待。
检查不同应用路径是否以不同顺序获取相同资源，或在无关处理期间持续持有事务。缩短事务并统一访问顺序有助于减少循环。
## 修正并验证模式
适当时统一访问共享行或表的顺序，并确认索引支持更新条件。修改前应了解具体数据库引擎的锁行为。
用曾触发问题的并发负载进行测试，并在发布后监控死锁频率。限制重试次数并保证幂等，避免事务中止后重复产生外部副作用。 [← 返回数据库常见问题](https://help.iagenify.com/zh/faqs/databases)
