特别强调~

本测试使用的是MySQL 8.0.27~ 8.0.27~ 8.0.27(因为不同版本命令可能会有差异哈)

打开两个终端,分别连接上MySQL,使用select @@global.transaction_isolation;查看隔离级别(间隙锁要在可重复读的隔离级别下)

​如果报类似ERROR 1193 (HY000): Unknown system variable 'tx_isolation'的错,一般是版本问题

# 老版本:select @@global.tx_isolation;select @@global.tx_isolation;# 5.8版本之后使用:select @@global.transaction_isolation;select @@global.transaction_isolation;

我们的测试表中的数据长这样

​事务1

终端A开启事务,查询id=5的数据(注意加上for update使用当前读)

select * from app_user_copy1 where id = 5 for update;

查看当前事务的锁信息

select * from performance_schema.data_locks;

  • 在MySQL 5.5以上、5.7.14以下的版本中,用户可以通过INFORMATION_SCHEMA下的INNODB_TRX、INNODB_LOCKS以及INNODB_LOCK_WAITS这三张表简单地监控并分析可能存在的锁问题

  • 在MySQL 8.0版本中,则需要使用performance_schema下的data_locks以及data_lock_waits获取相关的锁以及锁等待信息

  • 而MySQL版本在5.7.14到8.0之间的用户,只能通过其它手段间接的获取上述信息

我们从LOCK_MODE列中可以看到此事当前事务有两把锁(后面附有各个列的含义介绍)

  • 第一行LOCK_MODE为IX,即意向排他锁,属于表级锁

  • 第二行LOCK_MODE为X,REC_NOT_GAP,表示当前仅为行记录锁,且非间隙锁,属于行级锁

打开一个终端B,同样开启事务,更新id=5的行数据,会进入阻塞

update app_user_copy1 set name='test' where id=5;

​等到超时了就报错

​分别插入 id=3 和 id=7 的数据

INSERT INTO `app_user_copy1` (`id`, `name`, `email`, `phone`, `gender`, `password`, `age`, `create_time`, `update_time`) VALUES (3, '用户0', '123456@qq.com', '18582305042', 1, 'ef0641a4-7a7a-11ec-970f-7a9ea76b236f', 98, '2022-01-21 13:28:15', '2022-01-21 13:28:15');

​INSERT INTO `app_user_copy1` (`id`, `name`, `email`, `phone`, `gender`, `password`, `age`, `create_time`, `update_time`) VALUES (7, '用户0', '123456@qq.com', '18582305042', 1, 'ef0641a4-7a7a-11ec-970f-7a9ea76b236f', 98, '2022-01-21 13:28:15', '2022-01-21 13:28:15');

​都插入成功,说明当命中

【MySQL】记录锁?间隙锁?临键锁?到底锁了些什么?这一篇帮你捋清楚( ̄∇ ̄)/相关推荐

  1. mysql主键查询gap锁失效,mysql记录锁(record lock),间隙锁(gap lock),Next-key锁(Next-key lock)...

    1. 什么是幻读? 幻读是在可重复读的事务隔离级别下会出现的一种问题,简单来说,可重复读保证了当前事务不会读取到其他事务已提交的 UPDATE 操作.但同时,也会导致当前事务无法感知到来自其他事务中的 ...

  2. MySQL - 全局锁、表级锁、行级锁、元数据锁、自增锁、意向锁、共享锁、独占锁、记录锁、间隙锁、临键锁、死锁

    # 前言 本篇只介绍 MySQL 锁的基本知识. 我的 MySQL 版本是 MySQL 5.7.34, 建议使用 MySQL 5.6 及之后的版本. ## 先上一个图 ## 为什么要使用锁? 个人理解 ...

  3. mysql记录锁、间隙锁、临键锁

    名词解释 记录锁:record lock,即锁住一条记录 间隙锁:gap lock,即锁定一个区间,左开又开 临键锁:记录锁+间隙锁锁定的区间,左开右闭 mysql如何加锁 假设有如下数据 其中,id ...

  4. MySQL 锁全集(共享锁/排它锁、记录锁/间隙锁/临键锁)

    提升工作效率利器: ‎Mac App Store 上的"Whale - 任务管理.时间.卡片.高效率" 简介:锁是计算机协调多个进程或线程并发访问某一资源变得有序的机制. 一.锁分 ...

  5. mysql行锁同索引键问题_mysql 锁问题 (相同索引键值或同一行或间隙锁的冲突)

    1.使用相同索引键值的冲突 由于mysql 的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但如果是使用相同的索引键,是会出现锁冲突的.设计时要注意 例如:city表city_ ...

  6. mysql 锁问题 (相同索引键值或同一行或间隙锁的冲突)

    1.使用相同索引键值的冲突 由于mysql 的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但如果是使用相同的索引键,是会出现锁冲突的.设计时要注意 例如:city表city_ ...

  7. mysql进阶: mysql中的锁(全局锁/表锁/行锁/间隙锁/临键锁/共享锁/排他锁)

    锁在生活中处处可见,门锁,手机锁等等. 锁存在的意义是保护自己的东西不被别人偷走/修改. 在mysql中锁的意义也是一样,是为了保护自己的数据不被别人进行修改,从而导致出现脏读,幻读等问题.在学习锁的 ...

  8. Mysql 行锁 间隙锁 临键锁

    行锁 mysql 中 innodb 存储引擎支持行锁,我们平常默认使用的也是innodb存储引擎,因为innodb 引擎中有mvcc 的控制,所以我们要想测试的时候就需要手动来显示加锁 共享锁  se ...

  9. mysql记录锁(record lock),间隙锁(gap lock),Next-key锁(Next-key lock)亲测

    行锁 记录锁(record lock) 这是一个索引记录锁,它是建立在索引记录上的锁(主键和唯一索引都算),很多时候,锁定一条数据,由于无索引,往往会导致整个表被锁住,建立合适的索引可以防止扫描整个表 ...

最新文章

  1. HTTP/2做错了什么?刚刚辉煌2年就要被弃用了!?
  2. java条件查询excel_[转]EXCEL中的多条件查询(整理)
  3. mysql二维转一维_二维数组转为一维数组
  4. 8-Qt6 智能指针QPointer
  5. matlab raw函数,用matlab处理Raw格式的图像文件的方法
  6. oracle sql 分区查询语句_oracle11g 表分区后的查询语句如何知道是否进行了全表扫描...
  7. 管理服务器一般的作用,管理服务器作用
  8. 神牛笔记:吉林大学ACM总结(fennec)
  9. 日文邮件变成乱码解决方案
  10. FastDFS之文件服务器集群部署详解
  11. 如何检查有哪些尝试入侵服务器IP?有哪些命令?
  12. 进制转化(二进制,八进制,十进制,十六进制)详细教程
  13. 权御天下计算机音乐数字乐谱,权御天下-洛天依-和弦谱-《弹吧》官网tan8.com-和弦谱大全,学吉他,秀吉他...
  14. python必背的英语单词怎么写_背英语单词的最好方法
  15. 【重识云原生】第六章容器基础6.4.10.2节——StatefulSet常规操作实操
  16. 历年计算机基础试题和答案,自学考试00018计算机应用基础历年试题与答案
  17. SQL Server数据库-表
  18. ElasticSearch.net NEST批量创建修改删除索引完整示例
  19. 二级菜单(隐藏显示)
  20. 杭电2015‘11校赛 1007油菜花王国

热门文章

  1. Centos安装firefox
  2. Web Service与Rest API
  3. 如何解决LabView的Active X容器中无Animation GIF Control问题
  4. 超级计算机运行吃鸡,pdd花6万买的超级电脑,第二天玩吃鸡显卡被击穿,网友:人傻钱多...
  5. WFU校赛题解 B、C、F
  6. 出乎意料,5G最大赢家是苹果而不是华为
  7. 怎样才能实现表格背景图片拉伸
  8. ccks2020中文短文本实体链接任务测评论文--小米团队--第一名
  9. 杭州电子科技大学全国计算机排名,杭电排名为什么比211还高,杭州电子科技大学是211吗...
  10. 北京杭州差距这么大?程序员在北京准点下班,在杭州12点在还加班