以示例解釋鎖提升(LOCK PROMOTION)的概念


DB2 鎖提升是指獲取特定資源上更嚴格鎖的過程。DB2 使用鎖提升來處理嘗試訪問同一 DB2 資源的併發程序。基本上,鎖有三種類型。

共享鎖 (S)

併發程序可以在資源(DB2 表、行、頁等)上放置共享鎖,但不能更新資料。為了更新資料,併發程序必須將其鎖提升到更新鎖。

更新鎖 (U)

併發程序可以讀取資料,但不能更新資料。更新鎖表示程序已準備好更新資源,但為了進行實際更新,任何一個程序都可以將其鎖提升到排它鎖。

排它鎖 (X)

一次只能有一個程序持有資源的排它鎖。鎖所有者可以讀取和更新資源。其他併發程序既不能在資源上獲取任何鎖,也不能訪問資源。

我們將透過以下示例瞭解這一點。

如果有兩個 COBOL-DB2 程式——PROG A 和 PROG B 讀取 ORDERS DB2 表的同一行。這兩個程式都將在包含該 DB2 錶行的頁面上獲取共享鎖。現在,如果 PROG A 想要更新此行,則它將在頁面上獲取更新鎖,這稱為鎖提升,因為鎖從共享鎖提升到更新鎖。

此外,如果 PROG A 想要更新 ORDERS 表,它將等待直到 PROG B 從 ORDERS 表中釋放共享鎖。一旦 PROG B 釋放其共享鎖,PROG A 將將其更新鎖提升到排它鎖以更新表。在 PROG A 持有 ORDERS DB2 表的排它鎖期間,任何其他程序或程式都無法在此表上獲取任何鎖(共享、更新或排它)。

更新於: 2020-11-30

521 次檢視

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告