Gap Locks(间隙锁)用于锁定某一区间范围内的记录。它封锁索引记录中的间隔,或者第一条索引记录之前的范围,又或者最后一条索引记录之后的范围。其主要用于防止其他事务在索引记录中的间隔内部插入数据,而引起的幻读。对于读已提交(Read Committed, RC) 事务隔离级别,Gap Locks会自动失效。

数据锁定范围分析

假设user表中user_id主键(Primary Key)且为unsigned int 类型。

select * from user where user_id < 7 for update;

上面的操作锁定的记录范围为 user_id >= 0 到 user_id = 6 的记录,只有事务提交后,其他事务才能操作该范围的记录。注意即使 user_id=3对应的记录不存在,事务没提交前,插入user_id=3记录也是不允许的,不然就没办法解决幻读问题。

select * from user where user_id > 7 and user_id < 1000 for update;

上面的操作锁定的记录范围为 user_id > 7 到 user_id < 10000 的记录,只有事务提交后,其他事务才能操作该范围的记录。

select * from user where user_id > 1000 for update;

上面的操作锁定的记录范围为 user_id > 1000 到 int 最大值之间的记录,只有事务提交后,其他事务才能操作该范围的记录。

Gap Locks(间隙锁)相关推荐

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

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

  2. mysql临键锁_详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)

    详解 MySql InnoDB 中的三种行锁(记录锁.间隙锁与临键锁) 前言 InnoDB 通过 MVCC 和 NEXT-KEY Locks,解决了在可重复读的事务隔离级别下出现幻读的问题.MVCC  ...

  3. Mysql学习(六)-- innodb如何避免幻读及MVCC和间隙锁详解

    1. 问题:间隙锁导致死锁 最近由于想让代码快一点把一段代码逻辑从:查询->存在即删除->插入:改成了:根据条件删除->插入. 后来查看数据发现很多数据都不见了,不知道出现了什么bu ...

  4. mysql 共享锁和排他锁 意向锁 记录锁 Gap Locks Next-Key Locks 插入意向锁介绍

    文章目录 前言: 共享锁和排它锁 LOCK TABLES 和 UNLOCK TABLES 语句 意向锁 记录锁Record Locks 间隙锁 Gap Locks 下一键锁定 next-key 插入意 ...

  5. MySql行锁变表锁,性能下降?间隙锁(X,GAP),行锁(X,REC_NOT_GAP),区间锁(X)带你进阶。

    前言:接着上篇文章说,mysql行锁是跟着索引走的,会根据不同的索引类别添加不同的锁,下面开始介绍. 准备工作 先创建一张用户表,id为主键,但是不要让id自动增长,id值不要全部连续. CREATE ...

  6. MySQL锁 —— 记录锁、间隙锁、临键锁、自增锁

    MySQL的事务隔离级别有:未提交读.已提交读.可重复读.可串行化,除了串行化,在不同的隔离级别下,都会存在不同的并发问题,MySQL默认隔离级别是可重复读,在这种隔离级别下,存在幻读的问题,MySQ ...

  7. 聊一聊MySQL的记录锁、间隙锁与 Next-Key Lock

    有小伙伴在微信上表示面试时被问到了 Next-Key Lock 是啥,结果一脸懵逼,那么今天我们来捋一捋 MySQL 中的记录锁.间隙锁以及 Next-Key Lock. 1. Record Lock ...

  8. 《MySQL——幻读与next-key lock与间隙锁带来的死锁》

    create table 't' ('id' int(11) not null,'c' int(11) default null,'d' int(11) default null,primary ke ...

  9. MySQL中的各种锁(行锁、间隙锁、临键锁等等LBCC)

    目录 1.快照读和锁定读 1.1 一致性读 / 快照读 1.2 锁定读 1.2.1 共享锁和独占锁 1.2.2 锁定读的语句 1.2.2.1 Lock In Share Mode 对记录加S共享锁 1 ...

  10. MySql进阶-间隙锁(gap-key)

    文章目录 Innodb锁算法 关闭Gap Lock Gap-key 解决的问题 间隙锁影响 MVCC 核心原理 ReadView 可参考 快照读,当前读可参考 参考<InnoDB存储引擎> ...

最新文章

  1. Linux内存管理 (26)内存相关工具
  2. 一个当了爹的程序员的自白
  3. php读取配置文件连接mysql数据库,MySQL教程--通过配置文件连接数据库操作详解
  4. angular input和output
  5. SAP Commerce Cloud 2011装好之后,访问Accelerator时遇到错误
  6. 绝对不可错过的图形学算法!迭代最近点算法——ICP算法
  7. 没有上市的股权和股票有啥区别
  8. 大数据开发笔记(九):Flink基础
  9. 在linux中查看服务,linux中怎么查看服务状态
  10. 【蓝桥杯历年题】2020蓝桥杯A组省赛第二场(10.17)【含蓝桥杯官网提交地址】
  11. python生成列表a到z_python实现 1-26=A-Z, then AA-AZ, BA-BZ...ZZA-ZZZ, AAAA, etc.
  12. [洛谷] P1097 [NOIP2007 提高组] 统计数字
  13. 操作系统经典问题之哲学家就餐算法
  14. 邮箱服务器退回,126邮箱群发邮件被对方服务器退回
  15. robots文件的作用
  16. 2的10次方-1的python表达式_第二章PythonⅠ的基本语法,python,I
  17. 怪物之心无法触发_异度神剑2怪物之心任务怎么做_力男支线任务怪物之心流程介绍_3DM单机...
  18. CentOS 6.4 拨号上网全攻略
  19. 尚硅谷在线教育四:尚硅谷在线教育前端的知识
  20. 【bzoj4712】洪水(dp,树剖)

热门文章

  1. 宿舍计算机管理制度,【宿舍门禁系统能统计夜不归宿吗】_学生宿舍门禁系统使用管理规定(试行)...
  2. c语言编程环境搭配,windows7系统搭建C语言开发环境的操作方法?
  3. linux 命令:zip 详解
  4. java冒泡排序(含冒泡排序代码)
  5. 劢领AT| 五分钟,零基础玩转Wing中国电信物联网开放平台
  6. hack tool Mirkov4
  7. 智慧教育平台android,智慧教育平台APP 1.0.2 安卓版
  8. Sketch79 mac专业矢量绘图设计
  9. java 随机抽取数组内容_工具类:随机抽取数组或集合中的几个不重复元素
  10. 项目进度管理-活动历时估算工具技术:三点估算