DBMS多重粒度


本節將從理解粒度的含義開始學習。
粒度: 它是允許鎖定的資料項的大小。

多粒度

  • 它可以定義為將資料庫分層分解為可以鎖定的塊。
  • 多粒度協定增強了並行性並減少了鎖定開銷。
  • 它保留了鎖定內容和鎖定方式的軌跡。
  • 可以輕鬆決定鎖定資料項還是解鎖資料項。這種型別的層次結構可以圖形方式表示為樹。

範例: 考慮一個具有四級節點的樹。

  • 第一級或更高階別顯示整個資料庫。
  • 第二級表示型別區域的節點。 更高階別的資料庫恰好包含這些區域。
  • 該區域由子節點組成,稱為檔案。 沒有檔案可以存在於多個區域中。
  • 最後,每個檔案都包含稱為記錄的子節點。 該檔案恰好具有作為其子節點的記錄。 沒有記錄代表多個檔案。
  • 因此,從頂層開始的樹的級別如下:

    • 資料庫
    • 區域
    • 檔案
    • 記錄

在此範例中,最高階別顯示整個資料庫。以下級別是檔案,記錄和欄位。
有三種額外的鎖定模式,具有多種粒度:

意圖模式鎖定

意圖共用(IS) :它包含樹的較低階別的顯式鎖定,但僅包含共用鎖。
意圖獨佔(IX) :它含有在與排他或共用鎖較低水平顯式鎖定。
共用和意向獨占(SIX) :在此鎖定中,節點以共用模式鎖定,並且某個節點由同一事務鎖定在獨占模式。
相容性矩陣與意圖鎖定模式 :下表描述了這些鎖定模式的相容性矩陣:

它使用意圖鎖定模式來確保可序列化。它要求如果事務試圖鎖定節點,那麼該節點必須遵循以下協定:

  • 事務T1應遵循鎖相容性矩陣。
  • 事務T1首先鎖定樹的根,它可以在任何模式下鎖定它。
  • 如果T1當前將節點的父節點鎖定在IX或IS模式中,則事務T1將僅以S或IS模式鎖定節點。
  • 如果T1當前將節點的父節點鎖定在IX或SIX模式中,則事務T1將僅以X,SIX或IX模式鎖定節點。
  • 如果T1之前沒有解鎖任何節點,則事務T1可以鎖定節點。
  • 如果T1當前沒有節點鎖定的子節點,則事務T1將解鎖節點。

注意 ,在多粒度中,鎖是以自上而下的順序獲取的,並且鎖必須以自下而上的順序釋放。

  • 如果事務T1在檔案Fa中讀取記錄Ra9,則事務T1需要在IX模式下鎖定資料庫,區域A1和檔案Fa。 最後,它需要在S模式下鎖定Ra2。
  • 如果事務T2修改檔案Fa中的記錄Ra9,那麼它可以在IX模式下鎖定資料庫,區域A1和檔案Fa之後執行此操作。 最後,它需要在X模式下鎖定Ra9。
  • 如果事務T3讀取檔案Fa中的所有記錄,則事務T3需要鎖定資料庫,並且區域A需要在IS模式下。 - 最後,它需要在S模式下鎖定Fa。
  • 如果事務T4讀取整個資料庫,則T4需要以S模式鎖定資料庫。