日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

(数据库系统概论|王珊)第十一章并发控制-第五、六、七节:并发调度的可串行性、两段锁协议和封锁的粒度

發(fā)布時(shí)間:2025/3/15 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (数据库系统概论|王珊)第十一章并发控制-第五、六、七节:并发调度的可串行性、两段锁协议和封锁的粒度 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 一:可串行化調(diào)度
  • 二:沖突可串行化調(diào)度
    • (1)沖突操作
    • (2)可串行化調(diào)度的充分條件:沖突可串行化
  • 三:兩段鎖協(xié)議
  • 四:封鎖的粒度
    • (1)概念
    • (2)選擇封鎖的原則
    • (3)多粒度封鎖
      • A:多粒度樹
      • B:多粒度封鎖協(xié)議
    • (4)意向鎖

一:可串行化調(diào)度

可串行化調(diào)度:多個(gè)事務(wù)的并發(fā)執(zhí)行是正確的,當(dāng)且僅當(dāng)其結(jié)果與按某一次序串行地執(zhí)行這些事務(wù)時(shí)的結(jié)果相同,稱這種調(diào)度策略為可串行化(serializable)調(diào)度。可串行性是并發(fā)事務(wù)正確調(diào)度的準(zhǔn)則, 也即一個(gè)給定的并發(fā)調(diào)度,當(dāng)且僅當(dāng)它是可串行化的,才認(rèn)為是正確調(diào)度

例如,下面有兩個(gè)事務(wù),分別包含下列操作

事務(wù)T1T_{1}T1? 讀B、A=B+1、寫回A;
事務(wù)T2T_{2}T2? 讀A、B=A+1、寫回B;

假設(shè)A、B初值均為2,兩個(gè)事務(wù)最多只有兩種串行執(zhí)行策略

  • T1T_{1}T1?->T2T_{2}T2?:A=3,B=4
  • T2T_{2}T2?->T1T_{1}T1?:A=4,B=3

因此事務(wù)T1T_{1}T1?T2T_{2}T2?不管怎樣交叉并行運(yùn)行,只有兩種正確的結(jié)果(如上)。其他結(jié)果均是錯(cuò)誤的,相應(yīng)調(diào)度也稱之為不可串行化調(diào)度

二:沖突可串行化調(diào)度

(1)沖突操作

沖突操作:是指不同事務(wù)對(duì)同一個(gè)數(shù)據(jù)的讀寫操作寫寫操作。除此之外,其他操作均為不沖突操作

  • Ri(x)R_{i}(x)Ri?(x)Wj(x)W_{j}(x)Wj?(x):事務(wù)TiT_{i}Ti?讀x,事務(wù)TjT_{j}Tj?寫x
  • Wi(x)W_{i}(x)Wi?(x)Wj(x)W_{j}(x)Wj?(x):事務(wù)TiT_{i}Ti?寫x,事務(wù)TjT_{j}Tj?寫x

另外注意各種交換

  • 不同事務(wù)的沖突操作不可交換
  • 同一事務(wù)內(nèi)部的兩個(gè)操作不可交換
  • 不同事務(wù),同一數(shù)據(jù)的讀讀操作可以交換
  • 不同事務(wù),不同數(shù)據(jù),無論讀寫均可交換

(2)可串行化調(diào)度的充分條件:沖突可串行化

沖突可串行化:一個(gè)調(diào)度SC在保證沖突操作的次序不變的情況下,通過交換兩個(gè)事務(wù)不沖突操作的次序得到另一個(gè)調(diào)度SC‘^{`},如果SC‘^{`}是串行的,則稱調(diào)度SC為沖突可串行化的調(diào)度。若一個(gè)調(diào)度是沖突可串行化的,那么它一定是可串行化的調(diào)度

  • 注意:沖突可串行化調(diào)度是可串行化調(diào)度的充分條件,不是必要條件。也就是說有可能某個(gè)調(diào)度是可串行調(diào)度,但它卻不是沖突可串行化調(diào)度

例如,現(xiàn)在有一個(gè)調(diào)度SC1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)r_{1}(A)w_{1}(A)r_{2}(A)w_{2}(A)r_{1}(B)w_{1}(B)r_{2}(B)w_{2}(B)r1?(A)w1?(A)r2?(A)w2?(A)r1?(B)w1?(B)r2?(B)w2?(B)

考察兩個(gè)不同事務(wù)的交界處,看它是否滿足交換的條件


交換后SC1變?yōu)榱薙C2=r1(A)w1(A)r1(B)w1(B)r2(A)w2(A)r2(B)w2(B)r_{1}(A)w_{1}(A)r_{1}(B)w_{1}(B)r_{2}(A)w_{2}(A)r_{2}(B)w_{2}(B)r1?(A)w1?(A)r1?(B)w1?(B)r2?(A)w2?(A)r2?(B)w2?(B),它等價(jià)于一個(gè)串行調(diào)度T1T_{1}T1?->T2T_{2}T2?因此SC1是沖突可串行化調(diào)度,也一定是一個(gè)可串行化調(diào)度

三:兩段鎖協(xié)議

兩段鎖協(xié)議(2PL):兩段鎖協(xié)議是三級(jí)封鎖協(xié)議的特例,目前DBMS普遍采用該種協(xié)議實(shí)現(xiàn)并發(fā)調(diào)度的可串行性。具體內(nèi)容如下

  • 在對(duì)任何數(shù)據(jù)進(jìn)行讀、寫操作之前,首先要申請(qǐng)并獲得對(duì)該數(shù)據(jù)的封鎖
  • 在釋放一個(gè)封鎖之后,事務(wù)不再申請(qǐng)和獲得任何其他封鎖

其中“兩段”是指事務(wù)分為兩個(gè)階段

  • 第一階段:獲得封鎖,也稱為擴(kuò)展階段
  • 第二階段:釋放封鎖,也稱為收縮階段

另外還需要注意

  • 事務(wù)遵守兩段鎖協(xié)議是可串行化調(diào)度的充分條件,而非必要條件
  • 若并發(fā)事物都遵循兩段鎖協(xié)議,則對(duì)其的任何并發(fā)點(diǎn)都策略都是可串行化的
  • 若對(duì)并發(fā)事務(wù)的一個(gè)調(diào)度是可串行化的,不一定所有事務(wù)都符合兩段鎖協(xié)議

最后注意區(qū)分兩段鎖協(xié)議和一次封鎖法

  • 一次封鎖法要求每個(gè)事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行,因此一次封鎖法遵守兩段鎖協(xié)議
  • 但是兩段鎖協(xié)議并不要求事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,因此遵守兩段鎖協(xié)議的事務(wù)可能發(fā)生死鎖

四:封鎖的粒度

(1)概念

封鎖粒度(granularity):是指封鎖對(duì)象的大小。封鎖對(duì)象可以是邏輯單元,也可以是物理單元。封鎖粒度與系統(tǒng)并發(fā)度和并發(fā)控制的開銷密切相關(guān),一般來說,封鎖粒度越大,數(shù)據(jù)庫所能封鎖的數(shù)據(jù)單元就越少,并發(fā)度越小,開銷越小

  • 邏輯單元:元組、關(guān)系、整個(gè)數(shù)據(jù)庫等
  • 物理單元:頁(數(shù)據(jù)頁或索引頁)、物理記錄等

(2)選擇封鎖的原則

  • 需要處理多個(gè)關(guān)系的大量元組的用戶事務(wù)時(shí)以數(shù)據(jù)庫為封鎖單位
  • 需要處理大量元組的用戶事務(wù)時(shí)以關(guān)系為封鎖單元
  • 只處理少量元組的用戶事務(wù)時(shí)以元組為封鎖單位

(3)多粒度封鎖

多粒度封鎖:在一個(gè)系統(tǒng)中同時(shí)支持多種封鎖粒度供不同的事務(wù)選擇

A:多粒度樹

多粒度樹是以樹形結(jié)構(gòu)來表示多級(jí)封鎖粒度的方法

  • 根結(jié)點(diǎn)是整個(gè)數(shù)據(jù)庫,表示最大的數(shù)據(jù)粒度
  • 葉結(jié)點(diǎn)表示最小的數(shù)據(jù)粒度

B:多粒度封鎖協(xié)議

多粒度封鎖協(xié)議:允許多粒度樹中的每個(gè)結(jié)點(diǎn)被獨(dú)立地加鎖,對(duì)一個(gè)結(jié)點(diǎn)加鎖意味著這個(gè)結(jié)點(diǎn)的所有后裔結(jié)點(diǎn)也會(huì)被加上相同類型的鎖。因此,在多粒度封鎖中一個(gè)數(shù)據(jù)對(duì)象可能存在如下兩種封鎖方式

  • 顯式封鎖:直接加到數(shù)據(jù)庫對(duì)象上的封鎖
  • 隱式封鎖:由于上級(jí)結(jié)點(diǎn)加鎖而使該數(shù)據(jù)對(duì)象也被加鎖

多粒度封鎖方法中,顯式封鎖和隱式封鎖的效果是一樣的,因此系統(tǒng)檢查封鎖沖突時(shí)不僅要檢查顯式封鎖還要檢查隱式封鎖

  • 例如事務(wù)TTT要對(duì)關(guān)系R1R_{1}R1?XXX鎖,系統(tǒng)必須搜索其上級(jí)結(jié)點(diǎn)數(shù)據(jù)庫、關(guān)系R1R_{1}R1?以及R1R_{1}R1?下級(jí)結(jié)點(diǎn),即R1R_{1}R1?中的每一個(gè)元組,上下搜索。如果其中某一個(gè)數(shù)據(jù)對(duì)象已經(jīng)加了不相容鎖,則TTT必須等待

(4)意向鎖

  • 一般地,對(duì)某個(gè)數(shù)據(jù)對(duì)象加鎖,系統(tǒng)要檢查該數(shù)據(jù)對(duì)象上有無顯式封鎖與之沖突:再檢查其所有上級(jí)結(jié)點(diǎn),看本事務(wù)的顯式封鎖是否與該數(shù)據(jù)對(duì)象上的隱式封鎖(即由于上級(jí)結(jié)點(diǎn)已加的封鎖造成的)沖突;還要檢查其所有下級(jí)結(jié)點(diǎn),看它們的顯式封鎖是否與本事務(wù)的隱式封鎖(將加到下級(jí)結(jié)點(diǎn)的封鎖)沖突
  • 可以看出,這樣的檢查方法效率很低,因此意向鎖由此誕生

意向鎖:如果對(duì)一個(gè)結(jié)點(diǎn)加意向鎖,則說明該結(jié)點(diǎn)的下層結(jié)點(diǎn)正在被加鎖;對(duì)任一結(jié)點(diǎn)加鎖時(shí),必須先對(duì)它的上層結(jié)點(diǎn)加意向鎖。有如下三種常用的意向鎖

  • 意向共享鎖(IS鎖):如果對(duì)一個(gè)數(shù)據(jù)對(duì)象加IS鎖,表示它的后裔結(jié)點(diǎn)擬(意向)加S鎖
  • 意向排他鎖(IX鎖):如果對(duì)一個(gè)數(shù)據(jù)對(duì)象加IX鎖,表示它的后裔結(jié)點(diǎn)擬(意向)加X鎖
  • 共享意向排他鎖(SIX鎖):如果對(duì)一個(gè)數(shù)據(jù)對(duì)象加SIX鎖,表示對(duì)它加S鎖,再加IX鎖,即SIX=S+IX

鎖相容矩陣

總結(jié)

以上是生活随笔為你收集整理的(数据库系统概论|王珊)第十一章并发控制-第五、六、七节:并发调度的可串行性、两段锁协议和封锁的粒度的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。