数据库中的各种锁

概述

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

20190702133329.png

行锁

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

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

表锁

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

记录锁

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

间隙锁

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