按照锁的粒度来看,MySQL主要包含三种类型(级别)的锁定机制:
- 全局锁
锁的是整个database。由MySQL的SQL layer层实现的 - 表级锁
锁的是某个table。由MySQL的SQL layer层实现的 - ⾏级锁
锁的是某⾏数据,也可能锁定⾏之间的间隙。由某些存储引擎实现,⽐如InnoDB
表级锁和⾏级锁的区别:
表级锁: 开销⼩,加锁快;不会出现死锁;锁定粒度⼤,发⽣锁冲突的概率最⾼,并发度最低;
⾏级锁: 开销⼤,加锁慢;会出现死锁;锁定粒度最⼩,发⽣锁冲突的概率最低,并发度也最⾼;
按照锁的功能来说分为:共享读锁和排他写锁
按照锁的实现⽅式分为:悲观锁和乐观锁(使⽤某⼀版本列或者唯⼀列进⾏逻辑控制)