间隙锁的分析:

表结构如下:

CREATE TABLE `test_gap` ( `ID` int(11) NOT NULL, -- 主键 `NAME` varchar(255) NOT NULL, -- 非唯一索引 PRIMARY KEY (`ID`), KEY `NAME` (`NAME`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

表中数据如下:

假设UPDATE NAME = 'c' 或者 DELETE NAME = 'c'  会产生间隙锁:

此时会去寻找非唯一索引的间隙锁的上下区间,对应表里数据区间就是(a,e);

1:如果插入的数据,属于(a,e)之间,既b,d,此时无法插入,因为b,d被间隙锁锁定

2:如果插入的数据,不属于(a,e)之间,那么不受间隙锁影响,自由插入

3:如果插入的数据,等于a或者e,此时需要再根据主键来判断锁定范围:

1):如果是a,则取a的最大值ID为50,只要插入的数据ID<50则可以自由插入,ID>50既全部锁定无法插入

2):如果是e,则取e的最小值ID为30,只要插入的数据ID>30则可以自由插入,ID<30既全部锁定无法插入

那么开始模拟死锁情景

执行顺序:1,2,3,4

mysql空事务死锁_mysql空当锁导致死锁_mysql相关推荐

  1. mysql 表死锁_MySQL Innodb表导致死锁日志情况分析与归纳

    案例描述在定时脚本运行过程中,发现当备份表格的sql语句与删除该表部分数据的sql语句同时运行时,mysql会检测出死锁,并打印出日志. 两个sql语句如下:(1)insert into backup ...

  2. mysql的事务隔离级别与锁的关系、sql日志、Spring事务的特性

    文章目录 数据库事务介绍 什么是事务的隔离级别? 脏读幻读不可重复读的示例? mysql默认的隔离级别 Mysql锁有哪些 for update 什么是间隙锁?(Next-Key) mysql的日志 ...

  3. mysql holdlock_mysql事务隔离界别与锁机制

    数据库锁 共享锁(Shared lock) 例1: ---------------------------------------- T1: select * from table (请想象它需要执行 ...

  4. MySQL 意向共享锁、意向排他锁、死锁

    文章目录 一.InnoDB表级锁 二.意向共享锁和意向排他锁(针对整表) 三.死锁 1. 数据库中的死锁 2. 死锁场景以及解决办法 3. 操作 四.锁的优化建议 一.InnoDB表级锁 我们知道,I ...

  5. mysql不同锁解释_MySQL 各种锁理解总结

    该文章举例都是基于 InnoDB 可重复读(RR)隔离级别的,mysql 版本 8.0 根据加锁的范围,MySQL 里面的锁大致可以分成全局锁.表级锁和行锁三类 全局锁 全局锁就是对整个数据库实例加锁 ...

  6. 解决MySQL事务未提交导致死锁报错 避免死锁的方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/xuheng8600/article/d ...

  7. mysql二级封锁协议_MySQL 行锁、两阶段锁协议、死锁以及死锁检测

    行锁 MySQL的行锁都是在引擎层实现的,但是 MyISAM 不支持行锁,意味着并发控制只能使用表锁,同一张表任何时刻只能被一个更新在执行,影响到业务并发度.InnoDB 是支持行锁的,这也是 MyI ...

  8. mysql行级锁作用_Mysql事务及行级锁的理解

    在最近的开发中,碰到一个需求签到,每个用户每天只能签到一次,那么怎么去判断某个用户当天是否签到呢?因为当属表设计的时候,每个用户签到一次,即向表中插入一条记录,根据记录的数量和时间来判断用户当天是否签 ...

  9. mysql innodb事务中 出现_MySql InnoDB事务死锁问题

    这篇博客的文章内容发生于某天晚上服务端日志报了一大堆 Deadlock found when trying to get lock; try restarting transaction,当时通过字面 ...

最新文章

  1. oracle停止一切进程,oracle启动/停止的几种方法以及 启动和停止过程中出错的解决办法...
  2. 最小二乘法MSE 梯度下降法
  3. Asp.Net Session学习总结
  4. Linux下磁盘IO读写性能测试脚本
  5. html网页自动铺满屏幕,如何使HTML元素的区域铺满全屏
  6. 【转】04.Dicom 学习笔记-DICOM C-Move 消息服务
  7. 【转】国密算法sm4 CBC模式加解密
  8. GDB调试乱序,出现value optimized out解决方法
  9. 放在请求头目的_浅谈http的几种请求方法
  10. 使用 Python 进行科学计算 使用 Python 进行科学计算
  11. c#【 网络日志解析工具】开发篇-【媒体预览功能】--base64,webp响应解码为图片-》可做复制base64进行图片查看
  12. php表决器代码,三人表决器:VHDL源代码
  13. word目录中英文开头目录不对齐
  14. 更换帝国cms默认文章内容编辑器fckeditor
  15. 计算机金钱符号怎么打,电脑键盘上怎么打钱的符号
  16. C++后台开发推荐的书
  17. 微信小程序开发:集成腾讯地图的步骤
  18. springboot最核心的三个特有注解
  19. java 例外_【JAVA基础】浅析JAVA例外处理(转)
  20. 一款视频剪辑软件--爱剪辑

热门文章

  1. MFC启动和关闭线程
  2. kotlin 和java 混编
  3. abc类ip地址_通信网络的IP地址分配原理
  4. dfinity什么时候发币_区块链3.0的Dfinity揭秘
  5. python nameko用于生产_用 Python、 RabbitMQ 和 Nameko 实现微服务
  6. iOS7下隐藏status bar的详细研究
  7. u3d文件上传至服务器,unity 上传图片到云服务器
  8. mac版本查看日志命令
  9. 【翻译】卡通图解DNS,你的信息怎么被泄露的?
  10. Citrix XenApp应用虚拟化之RTX串号问题解决