1-2 并发控制(锁系统)

1.2 并发控制

​ 本章主要讨论服务层和存储引擎层的并发控制。

1.2.1 读写锁

并发控制通常通过一个由两种类型的锁组成的锁系统来解决。

  • 共享锁(读锁):读锁之间共享,即互不阻塞。但是会阻塞写锁。

  • 排他锁(写锁):写锁排斥其它读锁和写锁。

1.2.2 锁粒度

​ 如果要提高并发的能力,就要减小锁的粒度。锁定的数据或资源越少越精准,并发性越强。

​ MySQL主要有下面两种锁粒度。

表锁(table lock)

最基本的锁策略,也是开销最小的锁策略。

表锁在服务层和存储引擎层都有实现。

锁策略:写操作获取写锁。读操作先获取写锁,写锁获取到后获取读锁。

优先级:写锁请求会插入到读锁队列前。

行级锁(row lock)

行级锁可以最大程度地支持并发处理,开销也是最大的。

行级锁只在存储引擎层实现;服务层没有,也不了解存储引擎层的实现。