RSS
菜单

MySQL 死锁怎么产生?怎么解决?

死锁:两个事务互相持有对方需要的锁且等待。示例:T1 锁行 A 等行 B,T2 锁行 B 等行 A。InnoDB 处理:死锁检测(等待图)自动回滚代价较小的事务(ERROR 1213 Deadlock found),不需人工干预;也支持 innodb_lock_wait_timeout 超时。预防:① 加锁顺序一致(按固定顺序访问多行,如先小 id 后大 id);② 一次尽量锁少行(缩小事务范围);③ 事务尽量短(少持锁);④ 避免大事务跨表交叉加锁;⑤ 索引设计让锁落在更少记录;⑥ 业务重试(捕获死锁异常重试一次)。

下载推广海报

圈内讨论推广海报

《MySQL 死锁怎么产生?怎么解决?》完整推广海报
一起交流

全部回复 0

分享经验,让问题更进一步

讨论,从你的观点开始

还没有回复,欢迎补充经验或分享不同的思路。