設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 等...