DBMS多重粒度

让我们首先了解粒度的含义。
粒度:它是允许锁定的数据项的大小。
多重粒度:

  • 可以定义为按层次将数据库分解为可以锁定的块。
  • 多重粒度协议可增强并发性并减少锁定开销。
  • 它保持对锁定内容和锁定方式的跟踪。
  • 可以轻松决定锁定数据项还是解锁数据项。这种类型的层次结构可以图形化地表示为树。
例如:考虑一棵具有四个节点级别的树。
  • 第一级或更高级别显示整个数据库。
  • 第二层代表类型区域的节点。更高级别的数据库正是由这些区域组成。
  • 该区域由称为文件的子节点组成。没有文件可以存在于多个区域。
  • 最后, 每个文件都包含称为记录的子节点。该文件完全具有作为其子节点的那些记录。没有记录代表一个以上的文件。
  • 因此, 从顶层开始的树的层次如下:
    1. 数据库
    2. 区域
    3. 文件
    4. 记录
DBMS多重粒度

文章图片
在此示例中, 最高级别显示了整个数据库。下面的级别是文件, 记录和字段。
还有三种具有多种粒度的其他锁定模式:
意图模式锁定 意图共享(IS):它包含在树的较低级别的显式锁定, 但仅具有共享锁。
意图专用(IX):它包含排他或共享锁的较低级别的显式锁。
共享和意图专用(SIX):在此锁中, 节点通过共享事务锁定在共享模式下, 而某些节点被锁定在专有模式下。
具有意图锁定模式的兼容性列表:下表描述了这些锁定模式的兼容性列表:
DBMS多重粒度

文章图片
它使用意图锁定模式来确保可串行性。它要求如果事务尝试锁定一个节点, 那么该节点必须遵循以下协议:
  • 事务T1应该遵循锁兼容性矩阵。
  • 事务T1首先锁定树的根。它可以在任何模式下锁定它。
  • 如果T1当前将节点的父级锁定在IX或IS模式下, 则事务T1仅将节点锁定在S或IS模式下。
  • 如果T1当前已将节点的父级锁定在IX或SIX模式下, 则事务T1仅将节点锁定在X, SIX或IX模式下。
  • 如果T1以前没有仅解锁任何节点, 那么事务T1可以锁定一个节点。
  • 如果T1当前仅不具有该节点的所有子级, 则事务T1将解锁一个节点。
【DBMS多重粒度】请注意, 在多个粒度下, 锁是按自上而下的顺序获取的, 并且必须按自下而上的顺序释放锁。
  • 如果事务T1读取文件Fa中的记录Ra9, 则事务T1需要在IX模式下锁定数据库, 区域A1和文件Fa。最后, 它需要将Ra2锁定在S模式下。
  • 如果事务T2修改了文件Fa中的记录Ra9, 则可以在将数据库, 区域A1和文件Fa锁定为IX模式后进行修改。最后, 它需要将Ra9锁定在X模式。
  • 如果事务T3读取文件Fa中的所有记录, 则事务T3需要锁定数据库, 并以IS模式锁定区域A。最后, 需要将Fa锁定在S模式下。
  • 如果事务T4读取了整个数据库, 则T4需要将数据库锁定为S模式。

    推荐阅读