Chương 4
DIEU KHIEN DONG THOI
NOI DUNG CHI TIET
o Cac van dé trong truy xuat déng thoi
- Mất dữ liệu đã cập nhật (lost updated)
- Không thể đọc lại (unrepeatable read)
e “Bong ma” (phantom)
se Đọc dữ liệu chưa chính xac (dirty read)
o Ky thuat khoa (locking)
se Giới thiệu
e Khoa 2 giai doan (two-phase)
- Khóa đọc viết
e Khoa da hat (multiple granularity)
e Nghi thire cay (tree protocol)
NOI DUNG CHI TIET (TT)
o Kj thuat nhãn thời gian (timestamps)
se Giới thiệu
- Nhãn thời gian toàn phần
- Nhãn thời gian riêng phân
- Nhãn thời gian nhiều phiên ban (multiversion)
6 Kỹ thuật xác nhận hợp lệ (validation)
VAN DE MAT DU’ LIEU DA CAP NHAT (LOST UPDATED}
o Xét 2 giao tac
T,
T 2
Read(A)
Read(A)
A:=A+10
A:=A+20
Write(A)
Write(A)
o Gia si T, va T, duoc thuc hién dong thoi
A=50 | T, T.
Read(A)
ty Read(A)
A:=A+20
ts
Write(A)
tạ A:=A+10 A=70
tis Write(A) T, bi mat vì đã
k;
te
A=60
> Dir ligu da cap nhat tai t, cua bi ghi chong
lén & thoi diém t,
VAN DE KHONG THE DOC LAI (UNREPEATABLE READ)
o Xét 2 giao tac
T, Read(A) 1; Read(A)
A:=A+10 Print(A)
Write(A) Peintch
1
o Gia sir T, va T, duoc thuc hién dong thoi
A=50 | T, II
Read(A)
ty Read(A) Print(A)
Read(A)
tis A=50
Print(A) A=50
tạ A:=A+10 A=60
ts A=60
ts Write(A)
te
E;
> T; tiên hành đọc A hai lần thì cho hai kết quả khác nhau
VÁN ĐÈ “BĨNG MA” (PHANTOM)
© Xét 2 giao tác 7, và T; được xử lý đông thời
e Ava B là 2 tài khoản
‹ “FT, rút 1 số tiền ở tài khoản A rồi đưa vào tài khoản B
- T, kiếm tra đã nhận đủ tiên hay chưa?
A=70, B=50 | T, T.
t, Read(A) A=70
ts A:=A-50
A=20
ts Write(A) Read(A) A=20
ti,
Read(B) Read(B) B=50
t; B:=B+50 Print(A+B) | A+B=70 | mất 50???
tie Write(B)
t; ©
te
to
VÁN ĐẺ ĐỌC DỮ LIỆU CHƯA CHÍNH XÁC (DIRTY READ)
oXét 2 giao tac T, va 7T; được xử lý đông thời
T, Ts;
t, Read(A) Read(A)
Print(A)
ts A:=A+10
ts Write(A)
ty
ts
te Abort
> T, đã đọc dữ liệu được ghi bởi T; nhưng sau đó T; yêu câu hủy việc ghi
GIỚI THIỆU
o Lam thé nao dé bộ lập lịch ép buộc 1 lịch phải khả
tuần tự?
© Bộ lập lịch với cơ chế khóa (locking scheduler)
s Có thêm 2 hành động Tt, Ty
o Lock
o Unlock
Lich kha
tuân tự —
KY THUAT KHOA
© Các g1ao tác trước khi muon doc/viét lén 1 don vi dit
liệu phai phat ra 1 yéu cau xin khóa (lock) don vi
đữ liệu đó
- Loek(A) hay l(A)
o Yéu cau này được bộ phận quản lý khóa xử lý
- Nếu yêu cầu được chấp thuận thì giao tác mới được phép
doc/ghi lên đơn vị dữ liệu
T¡: Lock(A) Lock table
| Element | Transaction
Lock Manager _——— A _ T,
1
o Sau khi thao tác xong thì ø1ao tác phải phát ra
lệnh giải phóng đơn vị dir liéu (unlock) @
e Unlock(A) hay u(A)
KY THUAT KHOA (TT)
o Qui tac
° (1) Giao tac ding dan
T,1: ... (A)... r(A) / w(A) ... u(A) ...
e (2) Lich thao tac hop leé
S3: vee LCA) oo. cc ccceeeeeeees u
khơng có l,(A)
VI DU
Tt đa
Lock(A) Lock(A)
Read(A,t) Read(A,s)
t:=t+100 s:=s*2
Write(A,t) Write(A,s)
Unlock(A) Unlock(A)
Lock(B)
Lock(B) Read(B,s)
Read(B,t) s:=s*2
t:=t+100 Write(B,s)
Write(B,t) Unlock(B)
Unlock(B)
BAI TAP
o Cho biét lịch nào hợp lệ? Giao tác nào là đúng?
6) T, T1; II S T, Lock(A) II T.
Lock(A) Lock(B) Lock(B) Read(A)
Lock(B) Read(B) Read(B) Write(B) Lock(B) Lock(B)
Read(A) Write(B) Unlock(B) Read(B)
Write(B) Unlock(A) Write(B) Read(B)
Unlock(B) Unlock(B) Unlock(B)
Unlock(A)
Unlock(B)
BÀI TẠP (TT)
© Cho biết lịch nào hợp lệ? Giao tác nào là đúng?
Lock(A) Lock(B)
Read(A) Read(B)
Unlock(A) Write(B)
Lock(B) Unlock(B)
Write(B)
Unlock(B)
Lock(B)
Read(B)
Unlock(B)
KY THUAT KHOA (TT)
© Nếu lịch S hợp lệ thì S có khả tn tự khơng?
&@ 1; 1; A B
Lock(A); Read(A,t) 25 25
t:=t+100
Write(A,t); 125
Unlock(A) Lock(A); Read(A,s)
s:=s*2
Write(A,s); Unlock(A)|/ 250
Lock(B); Read(B,s)
s:=s*2
Write(B,s); Unlock(B) 50
Lock(B); Read(B,t)
t:=t+100
Write(B,t); 150
Unlock(B)
KY THUAT KHOA (TT)
o Kiém tra tinh kha tuan tu
° Input : Lich S duoc lap ti n giao tac xir ly dong thoi
T, T;,..., Tạ theo kỹ thuật khóa đơn giản
- Output : S khả tuần tự hay không?
° Xây dựng 1 đồ thị có hướng G
- Mỗi giao tác T; là 1 đỉnh của đồ thị
- Nếu một giao tác 7, phát ra Lock(A) sau một giao tác Ï;
phát ra Unlock(A) ‘thi sẽ vẽ cung tir T, dén T,, i#j
- § kha tuan tw néu G khơng có chu trình
KY THUAT KHOA (TT)
T, T1; @) Œ)
Lock(A)
Read(A) Lock(A) (— Ty Xñ @
A:=A-10 Read(A)
Write(A) Print(A) G khơng có chu trình => S khả
Unlock(A) Read(A) tuần tự
Print(A) theo thứ tự T; thực hiện trước
Unlock(A)
rồi tới T;
KY THUAT KHOA (TT)
Lock(A) Bl @ (r)
Read (A,t)
t:=t+100 Lock(A) B3 G có chu trình => S khơng
Read(A,s) kha tuan tu
Write(A,t) Write(A,s)
Unlock(A) tshoeone thi tu T, 1 thuc hién truc
Unlock(A) Lock(B)
rồi tới T;
Lock(B) Read.)
Write (Bs) ©
Read(B,t)
t:=t+100 Unlock(B)]
Write(B,t)
Unlock(B)
KY THUAT KHOA 2 GIAI DOAN (2PL: PHASE LOCK)
o Qui tac u,(A).
5 (3) Giao tac 2PL khong co lock
S:........... 0.)
——
khong co unlock
Don aA A £
Thực hiện xong hết tât
vị dữ ca cac Š yéu cau lock roi
mớói tiền hanh unlock
héu BOT EOT
giữ
lock < WwW
của T. Phase >< > t ©
lock
Phase
unlock
KY THUAT KHOA 2 GIAI DOAN (TT)
qh T1: 1 T
Lock(A) Lock(B)
Lock(B) Lock(A)
Read(A) Read(B)
Read(B) Read(A)
Lock(B) B=B-50 Unlock(A)
Lock(A) Write(B) Lock(B)
Read(B) Unlock(B) Read(B)
Read(A) Lock(A) Unlock(B)
B:=B+A Read(A)
Unlock(B) Pritn(A+B)
Write(B) A:=A+B A=AT50
Unlock(A) Write(A)
Unlock(B) Unlock(A) Write(A)
Unlock(A)
Thỏa nghi thức khóa Không thỏa nghi thức
2 giai đoạn khóa 2 giai đoạn
KY THUAT KHOA 2 GIAI DOAN (TT)
&) 1) qT; &) 1) qT;
Lock(A);Read(A,t) Read (A,t)
t:=t+100; Write(A,t) Lock(A); Read(A,s) t:=t+100 Read(A,s)
Lock(B);Unlock(A) s:=s*2; Write(A,s) Write(A,t) s:=s*2
Lock(B) Write(A,s)
Read(B,t); t:=t+100 Read(B,t)
Write(B,t); Unlock(B) cha t:=t+100 Read(B,s)
Write(B,t) s:=s*2
Lock(B); Ulock(A) Write(B,s
Read(B,t); t:=t*2
Write(B,t);
Unlock(B)