Tải bản đầy đủ (.pdf) (105 trang)

chương 4 điều khiển đồng thời

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (13.24 MB, 105 trang )

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)


×