資料庫作業21 第十一章 併發控制

2021-10-06 06:00:32 字數 2931 閱讀 6731

設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:=a2;

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井給出執行結果答:

t1t2

t3slock 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

t2t3

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

t2t3

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)若這三個事務都遵守兩段鎖協議,請給出乙個產生死鎖的排程。

t1t2

t3slock a

y=a=0

slock a

y=a=0

xlock a

等待xlock a

等待 slock a

y=a=0

xlock a等待

今有三個事務的乙個排程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)

是衝突可序列化的排程。

考慮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)

t1t2

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)t1t2

slock a

r(a)

slock b

r(b)

xlock a

xlock b

資料庫作業21 第十一章 併發控制

1 4種 16,8,4,2 t1 t2 t3 a 16 t1 t3 t2.a 8 t2 t1 t3 t3 t1 t2.a 4 t2 t3 t1 t3 t2 t1.a 2 2 結果為16 t1t2 t3slock a y r a 0 unlock a xlock a slock a a y 2 等待w...

資料庫作業21 第十一章 併發控制課後習題

9 設t1 t2 t3是如下三個事物,設a的初值為0.t1 a a 2 t2 a a 2 t3 a a 2 即a leftarrow a2 a 2a2 1 若這三個事物允許併發執行,則有多少種可能的正確結果?請一一枚舉出來。可能會產生的結果有 2 4 8 16 t1t2t3 16 t1t3t2 8 ...

資料庫作業21 併發控制

這不排列組合嗎 t1 t2 t3 16 t1 t3 t2 8 t2 t1 t3 4 t2 t3 t1 4 t3 t1 t2 2 t3 t2 t1 2 2 t1 t2t3 slock a y r a 0 unlock a xlock a slock a a y 2 等待w a 等待unlock a 等...