mysql学习:锁
锁
有哪些锁
- 全局锁,就是整个mysql停住
- 表级锁,对表的结构修改的时候加锁
- 行级锁,innodb实现的,每行数据修改都会加的锁
- 记录锁,每条记录加锁
- 间隙锁,范围修改查找加锁
- 临键锁,闭区间
- 插入意向锁,间隙锁和临键锁期间阻止插入
乐观锁和悲观锁
- 乐观锁认为不用阻塞操作也能保证数据一致
- 加一个版本号字段
- 悲观锁认为自己必须阻塞操作才能执行
- 乐观锁认为不用阻塞操作也能保证数据一致
加锁的情况有哪些
- 可重复读的情况下默认都是临键锁
记录锁是唯一索引等值查询命中 间隙锁是唯一索引等值查询未命中 或 非唯一索引的范围查询或等值查询 临键锁是非唯一索引的等值或范围查询 或 唯一索引的范围查询
如果没有索引或者没命中索引,就全表记录加临键锁,相当于锁表死锁是什么情况?怎么避免死锁
- 死锁就是互相等待对方的资源,然后卡住了
- 避免死锁
- 缩短锁的持久时间
- 减少间隙锁
- 减少加锁范围
mysql学习:锁
http://example.com/2024/04/11/mysql学习:锁/