MySQL
- 分类
- 数据库
- 难度
- 未设置
- 来源数
- 1
- 更新时间
- 2026/03/29 00:57
答案
比如当事务A先加了一个间隙锁,然后事务B加了一个同样的间隙锁,接下来事务A想要在这中间插入,想添加插入意向锁,此时就会被阻塞,事务B也想插入的话,同样会被阻塞。 避免死锁: 1. 设置等待超时时间,当事务等待超时之后,就会发生回滚,从而使得其他事务能够继续执行 2. 开启主动死锁检测,将innodb_deadlock_detect设置为on,发生死锁时,就会让死锁链中的一个事务发生回滚,使得其他事务继续执行。
相关题目(5)
什么是热点 key,如何处理?共源 1
分布式系统Redis
watch dog 机制是什么?共源 1
分布式系统并发锁Redis
Redis 如何实现分布式锁?共源 1
分布式系统锁Redis
分布式系统并发Redis
元信息
审核状态: active
关联来源: 1
来源面经题(0)
这道题目前没有手动沉淀的面经题来源。
来源(1)
Java八股(数据库).md
knowledge_noteQuestion 54: MySQL怎么会产生死锁?如何避免?
Source answer: 比如当事务A先加了一个间隙锁,然后事务B加了一个同样的间隙锁,接下来事务A想要在这中间插入,想添加插入意向锁,此时就会被阻塞,事务B也想插入的话,同样会被阻塞。 避免死锁: 1. 设置等待超时时间,当事务等待超时之后,就会发生回滚,从而使得其他事务能够继续执行 2. 开启主动死锁检测,将innodb_deadlock_detect设置为on,发生死锁时,就会让死锁链中的一个事务发生回滚,使得其他事务继续执行。
Reviewed answer: 死锁通常由多个事务相互持有锁并等待对方释放导致,例如两个事务先持有相同范围的间隙锁,再都尝试插入。避免方式包括设置锁等待超时,以及开启 innodb_deadlock_detect 主动死锁检测。