数据库死锁

database/deadlock2026-10-16 18:03:59

数据库死锁是多个事务因相互等待对方持有的锁而无法继续推进的状态,例如两个事务按相反顺序持有并申请两条记录的锁。

识别与处理

锁等待并不一定是死锁;死锁需要存在无法自行解除的循环依赖。数据库可以检测循环并选择一个事务中止,应用应理解相应错误,并从完整事务边界按规则重试。

降低发生概率

实践中可统一资源访问顺序、缩短事务、避免持锁期间等待外部网络,并选择合适索引减少锁定范围。超时能限制等待时间,但不等于证明没有死锁,也不能替代清理和回滚。

排查时应记录持锁者、等待者、锁类型、相关语句及事务开始时间,而不仅是重启连接。

参考资料

本页目录