1-2 并发控制(锁系统)
1.2 并发控制
本章主要讨论服务层和存储引擎层的并发控制。
1.2.1 读写锁
并发控制通常通过一个由两种类型的锁组成的锁系统来解决。
-
共享锁(读锁):读锁之间共享,即互不阻塞。但是会阻塞写锁。
-
排他锁(写锁):写锁排斥其它读锁和写锁。
1.2.2 锁粒度
如果要提高并发的能力,就要减小锁的粒度。锁定的数据或资源越少越精准,并发性越强。
MySQL主要有下面两种锁粒度。
表锁(table lock)
最基本的锁策略,也是开销最小的锁策略。
表锁在服务层和存储引擎层都有实现。
锁策略:写操作获取写锁。读操作先获取写锁,写锁获取到后获取读锁。
优先级:写锁请求会插入到读锁队列前。
行级锁(row lock)
行级锁可以最大程度地支持并发处理,开销也是最大的。
行级锁只在存储引擎层实现;服务层没有,也不了解存储引擎层的实现。
发布于