当前位置:网站首页>MySQL 必现之死锁
MySQL 必现之死锁
2022-08-01 09:33:00 【wzy0623】
场景1:
版本:5.6.14
隔离级别:READ-COMMITTED
复现步骤:
分析:
1. 由于数据库已经存在记录,所以事务 T1 执行 insert ignore into 会插入失败,并给该记录加了个 S 锁。
2. 由于 S 锁是相互兼容的,所以事务 T2 也给该记录加了 S 锁。
3. T1 继续执行 select for update 语句,尝试给数据加 X 锁,数据已经被 T2 加了 S 锁,此时 T1 等待 T2 释放 S 锁。
4. T2 继续执行 select for update 语句,尝试给数据加 X 锁,此时 T2 等待 T1 释放 X 锁,但T1还未获得X,出现死锁!
场景2:
版本:5.7.34
隔离级别:REPEATABLE-READ
复现步骤:
分析:
1. 事务1插入成功但未提交,在记录上加间隙锁和插入意向锁。
2. 事务2获得间隙锁,等待插入意向锁,被阻塞。
3. 事务3获得间隙锁,等待插入意向锁,被阻塞。
4. 事务1回滚,释放锁,使得事务2、3同时持有间隙锁,并等待插入意向锁,出现死锁!
边栏推荐
- JVM 运行时数据区与JMM 内存模型详解
- Detailed explanation of JVM runtime data area and JMM memory model
- 可视化——Superset安装与部署
- 在GBase 8c数据库后台,使用什么样的命令来对gtm、dn节点进行主备切换的操作
- Graduation thesis writing skills
- 解析MySQL数据库:“SQL优化”与“索引优化”
- Microsoft Azure & NVIDIA IoT 开发者季 I|Azure IoT & NVIDIA Jetson 开发基础
- ASP.NET Core 6 Framework Revealing Instance Demonstration [30]: Develop REST API with Routing
- Introduction and application of heap memory (including examples)
- Prime Ring Problem(素数环问题)
猜你喜欢
随机推荐
用OpenCV的边缘检测
Shell: Conditional test action
Redis 3.2.3 crashed by signal: 11 服务宕机问题排查
C language game - minesweeper
rpm and yum
HoloView--Customization
What's up with VS "Cannot find or open PDB file"?How to solve
leetcode-6134: Find the closest node to the given two nodes
Leetcode - 6135: the longest part of the figure
BGP综合实验
[Beyond programming] When the fig leaf is lifted, when people begin to accept everything
Prime Ring Problem
HoloView--live data
GBase 8c中怎么查询数据库配置参数,例如datestyle
三子棋(C语言实现)
企业微信群:机器人定时提醒功能数据库配置化
PHP获取时间戳后写数据库的一个问题
堆内存的介绍及应用(含例子)
Redis中间件(从搭建到弃坑)
ASP.NET Core 6 Framework Revealing Instance Demonstration [30]: Develop REST API with Routing








