一、锁级别划分
1、共享锁(读锁s)
select …… lock in share mode;
注: 读锁可以被其他事务共享,其他事务不可以给此对象加写锁
2、排它锁 / 独占锁(写锁x)
第一种是自动加排他锁。我们在操作数据的时候 ,包括增删改 ,都会默认加上一个排它锁。
第二种是手工加锁 ,我们用一个 FOR UPDATE 给一行数据加上一个排它锁
3、意向锁
二、区间
注:锁的字段没有索引直接升级为表锁
一、记录锁
在对有索引的字段进行等值查询,精准匹配到一条记录的时候,此时为记录锁
二、间隙锁
当查询没有检索出一条数据的时候(无论使用的是等值还是范围),此时为间隙锁
当范围查询时即使命中了也为间隙锁。
表中有id 为 1,4,7,10
当where id = 3 时,(1,4) 的闭区间为临隙锁的方位
三、临键锁
当我们使用了范围查询 ,不仅仅命中了 Record 记录 ,还包含了 Gap 间隙 ,在这种情况下我们使用的就是临键锁
当 where id >2 and id < 5 的时候 为(1,4],(4,7)
参考:
MySQL高级篇——锁的概述与案例应用_mysql锁举案例-CSDN博客