不同封鎖的介紹

2021-09-09 07:20:29 字數 1513 閱讀 9150

封鎖是是實現併發控制的乙個非常重要的技術。所謂封鎖就是事務t在對某個資料物件例如表、記錄等操作之前,先向系統發出請求,對其加鎖。加鎖後事務t就對該資料物件有了一定的控制,在事務t釋放鎖之前,其他事務不能更新該資料物件。下面介紹封鎖機制涉及到的各種鎖:

共享鎖用於讀操作,又稱讀鎖,記做s鎖。若事務t對資料物件a加上s鎖,則t可讀a但不能寫a,其他事務只能對a加s鎖,而不能加x鎖,直到t釋放鎖。

2.排他鎖

用於寫操作,又稱互斥鎖或者寫鎖,記做x鎖。若事務t對資料元素a加上x鎖,則只允許t讀寫a,其他事務都不能對a加任何鎖,直到t釋放a上的鎖。

3.更新鎖

用於更新操作。等價於先加共享鎖,在真正執行更新操作時,將共享鎖公升級為排他鎖。大部分dbms都不使用這種鎖。

4.增量鎖

使用者增量操作,如果乙個資料庫元素被上了增量鎖,除增量操作外的任何讀寫操作都是被禁止的。而增量鎖之間不相互排斥,即可以在有增量鎖的資料庫元素上再加增量鎖。

5.意向鎖

封鎖物件的大小稱為粒度。當資料庫中的物件是層次結構或者巢狀結構的時候(如下圖所示),為了管理不同粒度的鎖,引入了意向鎖。

物件層次結構圖

意向鎖表示乙個事務為了訪問資料庫物件層次結構中的某些底層資源(如關係中的元組)而要對該資源加共享鎖或者排他鎖的意向。即在給底層資源加鎖之前,需要從根節點開始,對其上層的資料庫元素加意向鎖,表示要訪問他們底層的元素。意向鎖包括意向共享鎖(is)、意向排他鎖(ix)以及意向排他共享鎖(six),他們的定義如下:

意向共享鎖(is):如果對乙個資料物件加is鎖,表示要對它的子節點加s鎖,讀取底層資料。例如,若要對某個元組加s鎖,則首先要對元組所在的關係或者資料庫加is鎖。

意向排他鎖(ix):如果對乙個資料物件加ix鎖,表示要對它的子節點加x鎖,更新底層的資料。例如,如果要對某個關係加x鎖,以便插入乙個元組,則首相應該對資料庫加ix鎖。

意向排他共享鎖(six):如果對乙個資料物件加six鎖,則表示對它加s鎖,再加ix鎖,即six = s + ix。six對其他事務的限制是其他任何乙個鎖都做不到的。

相容性矩陣是做出是否授權加鎖的乙個簡單**。相容性矩陣中對應每種封鎖方式都有一行和一列。行對應與資料庫元素x上另一事務已經持有的鎖,而列對應於x上申請的鎖方式。使用相容性矩陣做出鎖授予決定的規則是:

能夠授予c方式的鎖,當且僅當對於其他事務在x上已經有的每個r方式鎖對應的每一行,在c列上有乙個「是」。

封鎖方式中所涉及的鎖的相容性矩陣如下:

鎖模式isixs

xsixuis

是是是否

是是ix是

是否否否

否s是是

是否否否

x否否否

否否否six是否

否否否否

u否否否否否否

不同的系統介紹

1.windows作業系統是一款由美國微軟公司開發的視窗化作業系統。採用了gui圖形化操作模式,比起從前的指令作業系統如dos更為人性化。windows作業系統是目前世界上使用最廣泛的作業系統。最新的版本是windows 8。2.unix系統是1969年在貝爾實驗室誕生,最初是在中小型計算機上運用。...

命令列的封鎖與反封鎖

前言 這是我以前在shc上發過的文章,被評為了精華,寫這篇文章時參考了bct的劍心的文章,文章裡的 都是參照別人的,對不起大家啦,嘿嘿 正文 這是我以前學會的,看到有人發關於cmd的文章上來就突然想起來了,現在拿出來與大家共享。在cmd啟動之前,系統會先檢視 hkey local machine s...

ORACLE的封鎖機制

設立封鎖機制主要是為了對併發操作進行控制,對干擾進行封鎖,保證資料的一致性和準確性。oracle資料庫封鎖方式有三種 共享封鎖,獨佔封鎖,共享更新封鎖 b 8f4f63b9bb 封鎖型別 b 8f4f63b9bb oracle rdbms的封鎖型別可分為如下三類 內部級封鎖 內部級封鎖是用於保護or...