DB2鎖的屬性相信對於很多剛剛接觸DB2數據庫的新人來說,還比較陌生,下面就為您詳細介紹DB2鎖的屬性,希望對您能有所幫助。
在並發性和隔離級別一章中,我們看到 DB2 通用數據庫通過使用鎖把事務彼此隔離開來。鎖是一種用來將數據資源與單個事務關聯起來的機制,其用途是當某個資源與擁有它的事務關聯在一起時,控制其它事務如何與該資源交互。(我們稱與被鎖定的資源關聯的事務持有或擁有該鎖。)DB2 數據庫管理器用鎖來禁止事務訪問其它事務寫入的未提交數據(除非使用了“未提交的讀”隔離級別),並禁止其它事務在擁有鎖的事務使用限制性隔離級別時對這些行進行更新。事務一旦獲取了鎖,則在終止之前,就一直持有該鎖;該事務終止時釋放鎖,其它事務就可以使用被解鎖的數據資源了。
如果一個事務嘗試訪問數據資源的方式與另一個事務所持有的鎖不兼容(稍後我們將研究鎖兼容性),則該事務必須等待,直到擁有鎖的事務終止為止。這被稱為鎖等待。當鎖等待事件發生時,嘗試訪問數據資源的事務所要做的只是停止執行,直到擁有鎖的事務終止和不兼容的鎖被釋放為止。
所有的鎖都有下列基本DB2鎖的屬性:
Object:object 屬性標識了要鎖定的數據資源。DB2 數據庫管理器在需要時鎖定數據資源(如表空間、表和行)。
Size:size 屬性指定要鎖定的數據資源部分的物理大小。鎖並不總是必須控制整個數據資源。例如,DB2 數據庫管理器可以讓應用程序獨占地控制表中的特定行,而不是讓該應用程序獨占地控制整個表。
Duration:duration 屬性指定了鎖被持有的時間長度。事務的隔離級別通常控制了鎖的持續時間。
Mode:mode 屬性指定了鎖的擁有者所允許的訪問類型,以及對鎖定數據資源的並發用戶許可的訪問類型。這個屬性通常稱為鎖狀態。