資料庫鎖機制

2021-07-16 15:20:34 字數 713 閱讀 8767

共享鎖s鎖,又稱為讀鎖,若事務t對資料物件a加上s鎖,則事務t可以讀取a但不能修改a,其他事務只能再對a加s鎖,而不能加排他鎖x鎖,直到t釋放a上的s鎖。這保證了其他事務可以讀a,並且在t釋放a上的s鎖之前不能對a做任何更新。

排他鎖x鎖,又稱為寫鎖,若事務t對資料物件a加上x鎖,則事務t可以讀取a,也可以修改a,但是其他事務不能對資料物件a加任何鎖

悲觀鎖:假定會發生併發衝突,遮蔽一切可能違反資料完整性的操作。悲觀鎖假定其他使用者企圖訪問或者改變你正在訪問、改變的物件的概率很高,在悲觀鎖環境中,在改變物件之前就將物件鎖住,直到提交所作的更改後才釋放鎖。悲觀鎖不論是行鎖還是頁鎖,加鎖的時間都比較長,這樣會限制其他使用者的訪問,也就是說悲觀鎖的併發性不好。

樂觀鎖:假設不會發生併發衝突,只在提交操作時檢查是否違反資料完整性。樂觀鎖無法解決資料髒讀的問題。樂觀鎖認為使用者企圖改變你的正在更新的物件概率很小,因此樂觀鎖直到你準備提交所作更改時才將物件鎖住,當你讀取以及更改物件時加不鎖。因此樂觀鎖加鎖的時間更較悲觀鎖更短,可以獲得更好的併發訪問效能。如果第二個使用者恰好在第乙個使用者提交更改之前讀取了該物件(即髒讀),那麼當他完成了自己的更改進行提交時,資料庫就會發現該物件已經變化了,要求第二個使用者重新讀取該物件並作出更改。這說明在樂觀鎖環境中,會增加併發使用者讀取物件的次數。

資料庫鎖機制

這段時間由於開發專案,重新學習了資料庫的併發控制和鎖機制。資料庫就是通過鎖機制來解決併發問題的。主要就是兩種鎖,共享鎖和排他鎖 也叫獨佔鎖 在執行select語句的時候需要給操作物件 表或者一些記錄 加上共享鎖,但加鎖之前需要檢查是否有排他鎖,如果沒有,則可以加共享鎖 乙個物件上可以加n個共享鎖 否...

資料庫鎖機制

這段時間由於開發專案,重新學習了資料庫的併發控制和鎖機制。資料庫就是通過鎖機制來解決併發問題的。主要就是兩種鎖,共享鎖和排他鎖 也叫獨佔鎖 在執行select語句的時候需要給操作物件 表或者一些記錄 加上共享鎖,但加鎖之前需要檢查是否有排他鎖,如果沒有,則可以加共享鎖 乙個物件上可以加n個共享鎖 否...

資料庫鎖機制

資料庫就是通過鎖機制來解決併發問題的。主要就是兩種鎖,共享鎖和排他鎖 也叫獨佔鎖 在執行select語句的時候需要給操作物件 表或者一些記錄 加上共享鎖,但加鎖之前需要檢查是否有排他鎖,如果沒有,則可以加共享鎖 乙個物件上可以加n個共享鎖 否則不行。共享鎖通常在執行完select語句之後被釋放,當然...