資料庫中的鎖機制和封鎖協議

2021-08-03 10:26:01 字數 922 閱讀 9292

今天整理一下資料庫中的鎖機制和封鎖協議,鎖主要用於解決事務併發控制中產生的一些問題,在此之前我先列舉一些相關的基本概念。

併發操作帶來的資料不一致性包括丟失修改、不可重複讀和讀「髒」資料:

併發控制就是要用正確的方式排程併發操作,使乙個使用者事務的執行不受其他事務的干擾,常用的併發控制技術有封鎖、時間戳、樂觀控制法和多版本併發控制等,本文主要講利用鎖機制進行併發控制。

1、封鎖

封鎖就是事務t在對某個資料物件操作之前,先向系統發出請求對其加鎖。加鎖後事務t就對該資料物件有了一定的控制,在事務t釋放它的鎖之前,其他事務不能更新此資料物件。基本的鎖型別有兩種:排他鎖(又稱寫鎖,x鎖)和共享鎖(又稱讀鎖,s鎖),此處再加乙個更新鎖和意向鎖。

2、封鎖協議

在運用x鎖和s鎖這兩種基本封鎖對資料物件加鎖時,還需要約定一些規則。例如,何時申請x鎖或s鎖、持鎖時間、何時釋放等。這些規則稱為封鎖協議。通常使用**封鎖協議來在不同程度上解決併發操作的不正確排程帶來的丟失修改、不可重複讀和讀「髒」資料等不一致性問題。

一級封鎖協議是指,事務t在修改資料r之前必須先對其加x鎖,直到事務結束才釋放。一級封鎖協議可以防止丟失修改,並保證事務t是可恢復的。

二級封鎖協議是指,在一級封鎖協議基礎上增加事務t在讀資料r之前必須先對其加s鎖,讀完後即可釋放s鎖。二級封鎖協議出防止了丟失修改,還可以進一步防止讀「髒」資料。

**封鎖協議是指,在一級封鎖協議的基礎上增加事務t在讀資料r之前必須先對其加s鎖,直到事務結束才釋放。**封鎖協議出防止了丟失修改和

讀「髒」資料外,還可以進一步防止了不可重複讀。

資料庫鎖機制

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

資料庫鎖機制

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

資料庫鎖機制

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