Mysql锁问题-01-锁概述
Mysql的3种锁特性
特性理解
- 表级锁
开销小,加锁快; 不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 - 页级锁
开销介于表级锁和行级锁之间,会出现死锁; 锁定粒度也介于表级锁和行级锁之间,并发度一般。 - 行级锁
开销大,加锁慢;会出现死锁;锁定粒度最小,发生冲突的概率最低,并发度也最高。(比较常用的InnoDB存储引擎默认是行级锁)
很难说哪种锁好,只能根据应用的特点选择合适的锁。
表级锁适合于以查询为主的,只有少量按索引条件更新数据的应用,如web应用;
行级锁更适合于有大量按照索引条件并发更新少量不同数据,同时又有并发查询的应用。如在线实物处理系统(OLTP);
BDB已经被InnoDB代替,成为过去式了。
总结
锁 | 特性 | 应用场景 |
---|---|---|
表级锁 | 开销小,加锁快; 不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 | 适合于以查询为主的,只有少量按索引条件更新数据的应用,如web应用; |
行级锁 | 开销大,加锁慢;会出现死锁;锁定粒度最小,发生冲突的概率最低,并发度也最高。 | 适合于有大量按照索引条件并发更新少量不同数据,同时又有并发查询的应用。如在线实物处理系统(OLTP); |
页级锁 | 开销界于表级锁和行级锁之间,会出现死锁; 锁定粒度也界于表级锁和行级锁之间,并发度一般。 | 已经被InnoDB取代,InnoDB不仅支持行级锁还支持表级锁 |