并发控制机制大体上可分为悲观的和乐观的两种:
- 悲观的并发控制方法认为数据库的一致性经常会受到破坏,因此在事务访问数据对象前须采取一定措施加以控制,只有得到访问许可时,才能访问数据对象,如基于封锁的并发控制方法。——事前控制
- 乐观的并发控制方法则认为数据库的一致性通常不会遭到破坏,故事务执行时可直接访问数据对象,只在事务结束时才验证数据库的一致性是否会遭到破坏,如基于有效性验证方法。——事后验证
什么是锁机制:
- 锁的主要作用是管理共享资源的并发访问,锁可以用于实现事务的隔离。
- 为了避免多个事务同时操作数据库导致数据异常,一般会通过锁机制解决。
- 从对数据的操作类型(读/写)分类:共享锁(读锁)、排它锁(写锁)
- 从对数据的操作粒度分类:表锁、行锁
锁粒度:
- 锁粒度是指锁的作用范围。原则是让锁定对象更有选择性。也就是尽量只锁定部分数据,而不是所有的资源。
- 锁粒度越小,越适合做并发更新操作。
- 锁粒度越大,越适合做并发查询操作。
锁策略:是指在锁的开销和数据的安全性之间寻求平衡。
- 表锁是MySQL中最基本的锁策略,而且是开销最小的策略。
- 行锁可以最大程度地支持并发处理,同时也带来了最大的锁开销。