数据库中的各种锁

概述

分类方法
锁模式 乐观锁, 悲观锁
范围锁 行锁, 表锁
算法锁 临间锁, 间隙锁, 记录锁
属性锁 共享锁, 排他锁
状态锁 意向共享锁, 意向排他锁

20190702133329.png

行锁

一锁锁一行或多条记录,mysql的行锁是基于索引加载的,所以行锁是要加在索引响应的行上,即命中索引

锁冲突概率低,并发性高,但是会有死锁的情况出现

表锁

一锁锁一张表,表锁响应的是非索引字段,即全表扫描

记录锁

记录锁是在行锁上衍生出来的锁
记录锁锁的是表中的某一条记录,记录锁的出现条件是必须是精准命中索引并且索引是唯一索引,如主键id.

间隙锁

间隙锁又称为区间锁,每次锁定都是锁定一个区间,隶属行锁
既然间隙锁隶属行锁,那么间隙锁的触发条件必然是命中索引的
当我们使用范围查询而不是相等条件查询时,查询条件命中索引