第72讲:MySQL数据库锁机制剖析:行级锁、间隙锁与临键锁详解及应用指南

文章目录

    • 1.行级锁的概念
    • 2.行锁的概念以及基本使用
      • 2.1.行锁的概念
      • 2.2.常见的SQL语句所对应的行锁类别
      • 2.3.行锁的基本使用
    • 3.间隙锁和临键锁的概念以及基本使用
      • 3.1.间隙锁和临键锁的概念
      • 3.2.间隙锁和临键锁的基本使用

1.行级锁的概念

行级锁指的是,每次操作锁住的是表中一行的数据,锁的力度最小,发生锁冲突的概率也是最低的,并且并发度也是最高的,行级锁主要应用于InnoDB存储引擎中。

在InnoDB存储引擎中,表中每一行数据都是基于索引组织的,在索引中分为聚集索引和二级索引,聚集索引的叶子节点挂的是表中的一行数据,二级索引的叶子节点挂的是表中每条数据的主键,因此在InnoDB存储引擎中,表中的数据都是基于索引组织存放的,并且基于索引组织存放后,叶子节点之间是有序存储的还形成了双向链表。

行级锁是通过索引结构中每行数据对应的索引项来实现的,索引项也就是索引元素、聚集索引中的叶子节点(主键),每个叶子节点都对应表中的每一行数据,因为行级锁是通过表中索引结构的索引元素来添加行数锁的,并非是对表中的每条记录添加的行级锁,

对于行级锁主要分为以下三类:

  • 行锁

顾名思义,就是锁定单行记录的锁,主要是为了防止当前事务对这条数据处理时,其他的事务也对这条数据进行处理,在RC、RR隔离级别下都支持行锁。

image-20220621215213741

  • 间隙锁

间隙锁指的是锁住两个叶子节点之间间隙部分的索引元素,但是不锁定对应的记录,只是要确保索引元素之间的间隙不发生改变,以免其他事务通过索引元素之间的间隙元素写

你可能感兴趣的:(《MySQL,DBA封神打怪之路》,#,《Python基础语法入门篇》,数据库,mysql,云计算,运维,数据结构,链表)