事务管理基础:排它锁和共享锁相关知识笔记
?
?
1、排它鎖、共享鎖出現(xiàn)的意義
數(shù)據(jù)庫的并發(fā)事務(wù)對數(shù)據(jù)庫進(jìn)行讀寫,可能會破壞事務(wù)的隔離性和數(shù)據(jù)一致性。為了保持事務(wù)的隔離性,系統(tǒng)必須對事務(wù)之間的相互作用加以控制。最典型的做法就是當(dāng)一個事務(wù)訪問某個數(shù)據(jù)對象時,
其他事務(wù)都不能更新該數(shù)據(jù)對象。最常用的控制手段就是加鎖,該方法是只允許事務(wù)訪問當(dāng)前持有鎖的數(shù)據(jù)項。其中最常用的有排它鎖、共享鎖。
2、排它鎖(Exclusive Locks 簡稱X鎖)
排它鎖也成為寫鎖,主要用于對數(shù)據(jù)讀寫操作時進(jìn)行鎖定。如果事務(wù)T對數(shù)據(jù)A加上排它鎖后,就只允許事務(wù)T對數(shù)據(jù)A的讀取、修改,其他事務(wù)對數(shù)據(jù)A不能再加任何鎖,也不能讀取和修改數(shù)據(jù)A,直到事務(wù)T釋放A上的排它鎖。
3、共享鎖(Share Locks 簡稱S鎖)
共享鎖也成為讀鎖,主要用于對數(shù)據(jù)進(jìn)行讀取操作時進(jìn)行鎖定。如果事務(wù)T對數(shù)據(jù)A加上共享鎖后,事務(wù)T只能讀取數(shù)據(jù)A但不可以修改,其他事務(wù)可以讀數(shù)據(jù)A加S鎖來讀取,只要數(shù)據(jù)A上有共享鎖,任何事務(wù)只能對其加共享鎖,而不能加排它鎖來修改。
4、封鎖協(xié)議?
4.1 封鎖協(xié)議的作用?
因為數(shù)據(jù)庫加鎖可以限制其他事務(wù)對數(shù)據(jù)的操作,但會降低事務(wù)的并發(fā)性,這個時候可以采用封鎖協(xié)議來保證事務(wù)的一致性前提下盡可能提高并發(fā)性。封鎖協(xié)議是對數(shù)據(jù)加鎖類型、加鎖時間、釋放鎖時間的一些規(guī)則的描述。
常用的封鎖協(xié)議:一級封鎖協(xié)議、二級封鎖協(xié)議、三級封鎖協(xié)議。?
一級封鎖協(xié)議:主要是指事務(wù)T在修改數(shù)據(jù)A之前必須先對其加上排它鎖,直到事務(wù)結(jié)束后才能釋放排它鎖。一級封鎖協(xié)議使得在一個事務(wù)修改數(shù)據(jù)期間,其他事務(wù)不能對該數(shù)據(jù)進(jìn)行修改,只能等該事務(wù)結(jié)束之后,主要解決了丟失修改的問題。?
二級封鎖協(xié)議:主要是在一級封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)A之前必須對其加上共享鎖,讀取完成后釋放共享鎖。二級封鎖協(xié)議使得一個事務(wù)不能讀取被其他事務(wù)修改中的數(shù)據(jù)。解決了數(shù)據(jù)臟讀的問題。但事務(wù)T如果讀取數(shù)據(jù)A之后,其他事務(wù)再對A做完修改,事務(wù)T再去讀取A,會產(chǎn)生不可重復(fù)的錯誤。
三級封鎖協(xié)議:主要是在一級封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)A之前必須對其加上共享鎖,讀取完成后釋放共享鎖,直到事務(wù)結(jié)束后才釋放共享鎖。這樣就解決了二級封鎖協(xié)議的不可重復(fù)讀的問題。
?
?
IT技術(shù)分享社區(qū)
個人博客網(wǎng)站:https://programmerblog.xyz
文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠(yuǎn)程辦公:常用的遠(yuǎn)程協(xié)助軟件,你都知道嗎?51單片機(jī)程序下載、ISP及串口基礎(chǔ)知識硬件:斷路器、接觸器、繼電器基礎(chǔ)知識
?
總結(jié)
以上是生活随笔為你收集整理的事务管理基础:排它锁和共享锁相关知识笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 认识Web.config文件
- 下一篇: 西瓜播放器xgplayer的简单使用de