?
?
1、排它鎖、共享鎖出現的意義
數據庫的并發事務對數據庫進行讀寫,可能會破壞事務的隔離性和數據一致性。為了保持事務的隔離性,系統必須對事務之間的相互作用加以控制。最典型的做法就是當一個事務訪問某個數據對象時,
其他事務都不能更新該數據對象。最常用的控制手段就是加鎖,該方法是只允許事務訪問當前持有鎖的數據項。其中最常用的有排它鎖、共享鎖。
2、排它鎖(Exclusive Locks 簡稱X鎖)
排它鎖也成為寫鎖,主要用于對數據讀寫操作時進行鎖定。如果事務T對數據A加上排它鎖后,就只允許事務T對數據A的讀取、修改,其他事務對數據A不能再加任何鎖,也不能讀取和修改數據A,直到事務T釋放A上的排它鎖。
3、共享鎖(Share Locks 簡稱S鎖)
共享鎖也成為讀鎖,主要用于對數據進行讀取操作時進行鎖定。如果事務T對數據A加上共享鎖后,事務T只能讀取數據A但不可以修改,其他事務可以讀數據A加S鎖來讀取,只要數據A上有共享鎖,任何事務只能對其加共享鎖,而不能加排它鎖來修改。
4、封鎖協議?
4.1 封鎖協議的作用?
因為數據庫加鎖可以限制其他事務對數據的操作,但會降低事務的并發性,這個時候可以采用封鎖協議來保證事務的一致性前提下盡可能提高并發性。封鎖協議是對數據加鎖類型、加鎖時間、釋放鎖時間的一些規則的描述。
常用的封鎖協議:一級封鎖協議、二級封鎖協議、三級封鎖協議。?
一級封鎖協議:主要是指事務T在修改數據A之前必須先對其加上排它鎖,直到事務結束后才能釋放排它鎖。一級封鎖協議使得在一個事務修改數據期間,其他事務不能對該數據進行修改,只能等該事務結束之后,主要解決了丟失修改的問題。?
二級封鎖協議:主要是在一級封鎖協議加上事務T在讀取數據A之前必須對其加上共享鎖,讀取完成后釋放共享鎖。二級封鎖協議使得一個事務不能讀取被其他事務修改中的數據。解決了數據臟讀的問題。但事務T如果讀取數據A之后,其他事務再對A做完修改,事務T再去讀取A,會產生不可重復的錯誤。
三級封鎖協議:主要是在一級封鎖協議加上事務T在讀取數據A之前必須對其加上共享鎖,讀取完成后釋放共享鎖,直到事務結束后才釋放共享鎖。這樣就解決了二級封鎖協議的不可重復讀的問題。
?
?
IT技術分享社區
個人博客網站:https://programmerblog.xyz
文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識
?