概述
分类方法 | 锁 |
---|---|
锁模式 | 乐观锁, 悲观锁 |
范围锁 | 行锁, 表锁 |
算法锁 | 临间锁, 间隙锁, 记录锁 |
属性锁 | 共享锁, 排他锁 |
状态锁 | 意向共享锁, 意向排他锁 |
行锁
一锁锁一行或多条记录,mysql的行锁是基于索引加载的,所以行锁是要加在索引响应的行上,即命中索引
锁冲突概率低,并发性高,但是会有死锁的情况出现
表锁
一锁锁一张表,表锁响应的是非索引字段,即全表扫描
记录锁
记录锁是在行锁上衍生出来的锁
记录锁锁的是表中的某一条记录,记录锁的出现条件是必须是精准命中索引并且索引是唯一索引,如主键id.
间隙锁
间隙锁又称为区间锁,每次锁定都是锁定一个区间,隶属行锁
既然间隙锁隶属行锁,那么间隙锁的触发条件必然是命中索引的
当我们使用范围查询而不是相等条件查询时,查询条件命中索引