數據庫作業21:第十一章:併發控制

  1. 設T1、T2、T3,是如下的三個事務,設A的初值爲0。
    T1:A:=A+2;
    T2:A:=A2:
    T3:A:=A**2; (即 A←A^2)
    (1)若這三個事務允許併發執行,則有多少種可能的正確結果?請一一列舉出來。
    (2)請給出一個可串行化的調度,並給出執行結果。
    (3)請給出一個非串行化的調度,並給出執行結果。
    (4)若這三個事務都遵守兩段鎖協議,請給出一一個不產生死鎖的可串行化調度。
    (5)若這三個事務都遵守兩段鎖協議。請給出一個產生死鎖的調度.
    答:
    設T1、T2、T3,是如下的三個事務,設A的初值爲0。
    T1:A:=A+2;
    T2:A:=A
    2;
    T3:A:=A*A;(A←A^2)
    ①若這三個事務允許並行執行,則有多少可能的正確結果,請一以列舉出來
    答:
    A的最終結果可能有2、4、8、16。
    因爲串行執行次序有T1T2T3;T1T3T2;T2T1T3;T2T3T1;T3T1T2;T3T2T1。對應的執行結果是16;8:4;2;4;2。
    ②請給出一個可串行化的調度4井給出執行結果
    答:
T1 T2 T3
Slock A
Y=A=0
Unlock A Xlock A
A=Y+2 Slock A
寫回A(=2) 等待
Unlock A 等待
等待
Y=A=2
Unlock A
Xlock A
Slock A
A=Y*2 等待
寫回A(=4) 等待
Unlock A 等待
Y=A=4
Unlock A
Xlock A
A=Y*Y
寫回A(=16)
Unlock A

最後結果A爲16,是可串行化的調度。

(3)請給出一個非串行化的調度,並給出執行結果。
答:

T1 T2 T3
Slock A
Y=A=0
Unlock A
Slock A
Xlock A
等待 Unlock A
A=Y+2 等待
寫回A(=2) Slock A
Unlock A 等待
Y=A=2
Unlock A
Xlock A
Xlock A
等待 Y=Y**2
等待 寫回A(=4)
等待 Unlock A
A=Y*2
寫回A(=0)
Unlock A

最後結果A爲0,是非可串行化的調度。

4)若這三個事務都遵守兩段鎖協議,請給出一個不產生死鎖的可串行化調度。
答:

T1 T2 T3
Slock A
Y=A=0
Xlock A
A=Y+2 Slock A
寫回A(=2) 等待
Unlock A 等待
Y=A=2
Xlock A
Unlock A 等待 Slock A
A=Y*2 等待
寫回A(=4) 等待
Unlock A 等待
Y=A=4
Unlock A
Xlock A
A=Y**2
寫回A(=16)
Unlock A
Unlock A

(5)若這三個事務都遵守兩段鎖協議,請給出一個產生死鎖的調度。

T1 T2 T3
Slock A
Y=A=0
Slock A
Y=A=0
Xlock A
等待
Xlock A
等待
Slock A
Y=A=0
Xlock A
等待
  1. 今有三個事務的一個調度r3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A),該調度是衝突可串行化的調度嗎?爲什麼?
    答:
    是衝突可串行化的調度。
    Scl=r3(B) r1(A) w3(B) r2(B) r2(A) w2(B) r1(B) w1(A),交換r1(A)和w3(B),得到
    r3(B) w3(B) r1(A) r2(B) r2(A) w2(B) r1(B) w1(A)
    再交換r1(A)和r2(B) r2(A) w2(B),得到
    Sc2=r3(B) w3(B) r2(B) r2(A) w2(B) r1(A) r1(B) w1(A)
    由於Sc2是串行的,而且兩次交換都是基於不衝突操作的,所以
    Sc1=r3(B) r1(A) w3(B) r2(B) r2(A) w2(B) r1(B) w1(A)
    是衝突可串行化的調度。

  2. 考慮T1和T2兩個事務。
    T1: R(A); R(B);B=A+B; W(B) T2:R(B); R(A);A=A+B; W(A)
    (1)改寫T1和T2,增加加鎖操作和解鎖操作, 並要求遵循兩階段封鎖協議。
    (2)說明T1和T2的執行是否會引起死鎖,給出T1和T2的一個調度並說明之。
    答:
    (1)

T1 T2
Slock A Slock B
R(A) R(B)
Xlock B Xlock A
R(B) R(A)
B=A+B A=A+B
W(B) W(A)
Unlock A Unlock B
Unlock B Unlock A

(2)

T1 T2
Slock A
R(A)
Slock B
R(B)
Xlock A
Xlock B
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章