当前位置: 首页 > news >正文

InnoDB锁

1、共享排他锁 Shared and Exclusive Locks

--共享锁(SLock),允许持有该锁的事务读取一行数据

--排它锁(XLock),允许持有该锁的事务删除或者更新一行数据

特性:

--行级锁

--如果一个事务持有当前行的共享锁,那么其他事务就可以获得该行的共享锁

--如果一个事务持有当前行的排他锁,那么其事务必须等待这个事务释放后才能持有

加共享锁

--Update、Delete语句 在 innoDB会自动给设计的数据集加上排它锁

--普通Select语句是不会加任何锁

--MySQL 8.0之前的写法 但是不支持NOWAIT\SKIP\LOCAKED等特性

select * from xx where id = xx LOCK IN SHARE MODE;

--MySQL8.0开始支持

select * from xx where id = xx FOR SHARE;

加排它锁

--FOR Update

select * from xx where id = xx FOR UPDATE

2、意向锁(Intention Locks)

--未来的某一时刻,事务需要加共享排它锁,所以提前声明意向

--意向共享锁(intention shared lock,简称IS):表示事务有意向对表中的某些行加共享锁

--意向共享锁(intention exclusive lock,简称IX):表示事务有意向对表中的某些行加排他锁

特性:

--表级锁

--事务在请求S锁和X锁前,需要先获得对应的IS、IX锁

--意向锁不会阻塞全表扫描以前的任何请求

3、记录锁(Record Locks)

--用来封锁索引记录,从而防止其他的事务针对同一条记录执行增删改操作

4、间隙锁(Gap Locks)

--在Repeatable-Read(可重复读)隔离级别下的锁机制,用来封锁索引里面的间隙,解决幻读问题

--间隙:键值在条件范围内但不存在的记录

--包括:索引记录之间的间隙,第一条索引记录之前的范围,最后一条索引记录之后的范围

特性:

--要有索引

--封锁的是索引里面的间隙,防止其他事务在间隙中插入数据

--解决幻读问题

5、临键锁(Next-Key Locks)

--记录锁和间隙锁的组合,封锁索引记录和索引中的间隙

--会封锁记录本身已经索引记录之前的区间,即范围(上一条记录,记录本身)

--如果一个事务占用了索引记录R的共享排它锁,则其他事务不能在记录R及之前的区间插入新的索引记录

--InnoDB行锁默认用的就是临键锁

6、插入意向锁(Insert Intention Locks)

--由insert操作在插入行之前设置的一种间隙锁

--多个事务,在同一个索引,同一个范围区检察露记录时候,如果插入的位置不冲突,就不会阻塞彼此

7、自增锁(AUTO-INC Locks)

--特殊的表级锁

--专门针对插入AUTO_INCREMENT类型的列的事务

--最简单情况,如果一个事务正在往表里中插入记录,其他事务的插入必须等待,一边第一个事务插入的行的值是连续性的

--innodb_autoinc_lock_mode 可以用来调整锁的算法

8、谓词锁(Predicate Locks)

--用于空间索引的锁

http://www.lryc.cn/news/16983.html

相关文章:

  • Java Stream、File、IO 超详细整理,适合新手入门
  • 华为OD机试真题Python实现【寻找密码】真题+解题思路+代码(20222023)
  • springboot和springframework版本依赖关系
  • Java-多线程-增强篇-锁 强化 第一篇
  • Java static+private实现单例模式
  • 华为OD机试 - 查找充电设备组合(Python)【2023-Q1 新题】
  • Authing 入选德勤“中国明日之星”企业榜单
  • 单片机嵌入式操作系统内核
  • C语言——柔性数组
  • web人脸登录
  • C++数字
  • 【python】用plotly绘制正二十面体
  • [Datawhale][CS224W]图机器学习(五)
  • Windows部署Jar包的三种方式
  • 【图像分类】卷积神经网络之AlexNet网络模型结构详解
  • 学习动漫插画的网络班排行榜
  • SpringCloud第五讲 Nacos注册中心-服务注册到Nacos
  • IP地理位置定位技术原理是什么
  • j-vxe-table 下拉搜索选择框数据加载过多导致前端崩溃问题
  • Java国际化ResourceBundle详解
  • 一文高端Android性能优化-总结篇
  • 深入讲解CFS组调度!(上)
  • 大数据实操项目分享:餐饮智能推荐服务在线实习项目
  • 代码随想录day38
  • 《计算机网络:自顶向下方法》实验5:TCP
  • 【踩坑指南】Stable Diffusion 服务器端部署笔记
  • [qiankun]-多页签缓存
  • 2|电子技术|数字电子技术基础|雨课堂习题|考前回顾
  • vue+echarts:圆形柱状图设置角度和最大值
  • Linux系统安装Nginx常见报错问题