Mysql—锁原理与详解
MySQL锁介绍
一、加锁的目的:解决客户端并发访问的冲突问题
二、锁的分类
- 按照锁的功能来说分为:共享读锁和排他写锁。
- 按照锁的实现⽅式分为:悲观锁和乐观锁(使⽤某⼀版本列或者唯⼀列进⾏逻辑控制)。
- 按照锁的粒度来说,MySQL主要包含三种类型(级别)的锁定机制:全局锁、表级锁、⾏级锁。
- 全局锁:锁的是整个database。由MySQL的SQL layer层实现的。
- 表级锁:锁的是某个table。由MySQL的SQL layer层实现的。
- ⾏级锁:锁的是某⾏数据,也可能锁定⾏之间的间隙。由某些存储引擎实现,⽐如InnoDB。
三、表级锁和⾏级锁的区别
- 表级锁:开销⼩,加锁快;不会出现死锁;锁定粒度⼤,发⽣锁冲突的概率最⾼,并发度最低。
- ⾏级锁:开销⼤,加锁慢;会出现死锁;锁定粒度最⼩,发⽣锁冲突的概率最低,并发度最⾼。
- 表级锁锁着整张表,我锁着的时候,别人就用不了,所以发⽣锁冲突的概率最⾼。⾏级锁锁着表的某一行,其他行还是可以操作的,发⽣锁冲突的概率最低。