多粒度锁是数据库管理系统中的一个重要概念,用于在不同层次(粒度)上对数据进行加锁,从而提高并发性和系统性能。
-
意向锁:
- 意向锁是一种辅助性的锁,用于指示一个事务接下来的操作意向,以协调不同层次的锁。
- 意向锁分为两种:意向共享锁(IS锁)和意向独占锁(IX锁)。
-
IS锁(Intent Shared Lock) :
- 当一个事务准备在某条记录上加共享锁(S锁)时,需要先在表级别加一个IS锁。
- IS锁表示事务打算在表中的某些行上加入共享锁。
-
IX锁(Intent Exclusive Lock) :
- 当一个事务准备在某条记录上加排他锁(X锁)时,需要先在表级别加一个IX锁。
- IX锁表示事务打算在表中的某些行上加入排他锁。
-
兼容性:
- IS锁和IX锁是兼容的,即一个事务可以同时持有IS锁和IX锁,而不会发生冲突。
- IS锁和IX锁的引入是为了提高加表级别S锁和X锁时的效率,避免遍历方式检查表中是否有上锁记录。
多粒度锁的引入有助于提高并发性,减小锁的粒度,从而减少锁冲突的可能性。