Tải bản đầy đủ (.ppt) (40 trang)

Quản lý truy xuất đồ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 (359.49 KB, 40 trang )

Hồ Bảo Quốc
Khoa công nghệ thông tin
Đại học Khoa học tự nhiên
Khái niệm giao tác (transaction)

Một giao tác = nhóm các thao tác lên CSDL

T : begin transation

A1

A2



An

T : End transaction

Tính chất của giao tác

Nguyên tố (Atomicity)

Nhất quán (Cohesion)

Độc lập (Isolation)

Bền vững (Durability)

T biến CSDL từ trạng thái nhất quán E sang trạng
thái nhất quán E’


giao tác

Các thao tác đặc biệt

Begin transaction

End Transaction (commit, vadidation)

Annulation (rollback, abort)

Các tình huống của một giao tác

Kết thúc bình thường

Bị hủy do yếu tố bên ngoài (sự cố, tranh
chấp)

Tự hủy (abort)
Giao tác

Góc nhìn ứng dụng

Công cụ cho người lập trình

Quản lý tính nhất quán của CSDL

Bảo đảm các ràng buộc tòan vẹn

Góc nhìn hệ thống


Giao tác như một tiến trình

Đơn vị xử lý

Quản lý tranh chấp

Quản lý sự cố và khôi phục sau sự cố
Điều khiển tranh chấp

Tranh chấp

Các khái niệm quan trọng

Tập hợp các đối tượng được đọc bởi T : READS(T)

Tạp hợp các đối tượng được ghi bởi T : WRITES(T)
Các tranh chấp có thể giữa Ti và Tj :
WRITES(Ti) ∩READS(Tj) ≠ ∅
WRITES(Ti) ∩WRITES(Tj) ≠ ∅
Hình thức hóa dựa trên khái niệm « khả tuần tự »
T1
T1
T2
T2
Tranh ch p ?ấ
Tranh ch p ?ấ
Read(A)
Read(A)
Read(A)
Read(A)

OK
OK
Write(A)
Write(A)
Write(A)
Write(A)
M t c p nh tấ ậ ậ
M t c p nh tấ ậ ậ
Write(A)
Write(A)
Read(A)
Read(A)
Đ c d li u ch a xác ọ ữ ệ ư
Đ c d li u ch a xác ọ ữ ệ ư
nh nậ
nh nậ
Read(A)
Read(A)
Write(A)
Write(A)
Đ c không th đ c l iọ ể ọ ạ
Đ c không th đ c l iọ ể ọ ạ
Hình thức hóa vấn đề

Giao tác Ti = chuổi các hành động (READ,WRITE)

Thực hiện đồng thời N giao tác : thứ tự thực hiện (lịch) theo
thời gian các hành động của các giao tác này

Đồ thị phụ thuộc DEP(S)={(T1,A,T2) |A1=WRITE và

A2=WRITE
A1=WRITE và
A2=READ
A1=READ và
A2=WRITE}

Lịch

Tuần tự : <T1><T2><T3>….<Tn>

Không tuần tự

Định nghĩa

Lịch tuần tự = nhất quán

Liệu có tồn tại các lịch không tuần tự nhất quán
Có : nếu đồ thị phụ thuộc không có chu trình
Lịch và tính nhất quán
T1:READ(C1)
T1:READ(C1)
T1:READ(C1)
T1:READ(C1)
T1:READ(C1)
T1:READ(C1)
T1:C1=C1-50
T1:C1=C1-50
T2:READ(C2)
T2:READ(C2)
T1:C1=C1-50

T1:C1=C1-50
T1:WRITE(C1)
T1:WRITE(C1)
T1:C1=C1-50
T1:C1=C1-50
T2:READ(C2)
T2:READ(C2)
T1:READ(C2)
T1:READ(C2)
T2:C2=C2-70
T2:C2=C2-70
T1:WRITE(C1)
T1:WRITE(C1)
T1:C2=C2+50
T1:C2=C2+50
T1:WRITE(C1)
T1:WRITE(C1)
T2:C2-70
T2:C2-70
T1:WRITE(C2)
T1:WRITE(C2)
T2:WITE(C2)
T2:WITE(C2)
T1:READ(C2)
T1:READ(C2)
T2:READ(C2)
T2:READ(C2)
T1:READ(C2)
T1:READ(C2)
T2:WRITE(C2)

T2:WRITE(C2)
T2:C2=C2-70
T2:C2=C2-70
T2:READ(C3)
T2:READ(C3)
T1:C2=C2+50
T1:C2=C2+50
T2:WRITE(C2)
T2:WRITE(C2)
T2:C2=C2+50
T2:C2=C2+50
T2:READ(C3)
T2:READ(C3)
T2:READ(C3)
T2:READ(C3)
T2:C3=C3+70
T2:C3=C3+70
T1:WRITE(C2)
T1:WRITE(C2)
T2:C3=C3+70
T2:C3=C3+70
T1:WRITE(C2)
T1:WRITE(C2)
T2:C3=C3+70
T2:C3=C3+70
T2:WRITE(C3)
T2:WRITE(C3)
T2:WRITE(C3)
T2:WRITE(C3)
T2:WRITE(C3)

T2:WRITE(C3)
Tuần tự nhất quán Không tuần tự nhất quán Không tuần tự không nhất quán
Nghi thức khóa

Nguyên tắc : trước khi đọc hoặc viết một
đối tượng phải yêu cầu khóa đối tượng
đó

Lock(A)

Unlock(A)

Nếu đối tượng tự do OK, ngược lại thì
chờ
Các kỹ thuật chính để điều khiển
truy xuất đồng thời

Khóa hai giai đoạn

Khóa phân cấp đơn giản

Kỹ thuật nhãn thời gian

Kỹ thuật nhãn thời gian nhiều phiên bản

Điều khiển tranh chấp optimistic
Nghi thức khóa hai gia đọan

Hai lọai khóa


Khóa chia sẽ đọc: shared Lock

Khóa để viết exclusif Lock

Giao tác thỏa nghi thức khóa hai giai
đọan(2PL)

Các giao tác khác nhau không thể giữ đồng thời
các khóa có tranh chấp (shared lock + exclusif
lock hoặc 2 exclusif lock)

Một giao tác khi unlock một khóa thì không thể
phát ra yêu cầu khóa nửa
Định lý

Nếu trong một lịch tất cả các giao tác
đều thỏa nghi thức khóa hai giai đọan
thì tương đương với một lịch tuần tự
(khả tuần tự)
Đồ thị phụ thuộc – điều kiện đủ
T1
T1
T2
T2
T1
T1
T2
T2
Lock(A)
Lock(A)

Lock(A)
Lock(A)
READ(A)
READ(A)
READ(A)
READ(A)
Lock(A)
Lock(A)
Lock(B)
Lock(B)
Read(A)
Read(A)
Read(B)
Read(B)
Lock(B)
Lock(B)
Lock(B)
Lock(B)
Read(B)
Read(B)
Read(B)
Read(B)
Lock(B)
Lock(B)
Lock(A)
Lock(A)
Read(B)
Read(B)
Read(A)
Read(A)

T1 T2 T1
T2
(a)
(b)
(b) Có chu trình => không khả tuần tự
(a) Và (b) tương đương nhau về mặt công việc
Vấn đề bóng ma (Phantom)

Relation
NV(MSNV,PB,LUONG)
MSVN
MSVN
PB
PB
LUONG
LUONG
N1
N1
D1
D1
50
50
N2
N2
D1
D1
45
45
N3
N3

D2
D2
25
25
N4
N4
D2
D2
30
30
N5
N5
D2
D2
48
48
T1
T1
A1
A1
SELECT MAX(LUONG)
SELECT MAX(LUONG)
FROM NV
FROM NV
WHERE PB=D1
WHERE PB=D1
A2
A2
SELECT MAX(LUONG)
SELECT MAX(LUONG)

FROM NV
FROM NV
WHERE PB=D2
WHERE PB=D2
T2
T2
B1
B1
INSERT INTO NV VALUES(N6,D1,52)
INSERT INTO NV VALUES(N6,D1,52)
B2
B2
DELETE FROM NV WHERE MSNV=N5
DELETE FROM NV WHERE MSNV=N5
Vấn đề bóng ma (tt.)
L ch 1ị
L ch 1ị
L ch 2ị
L ch 2ị
L ch 3ị
L ch 3ị
A1
A1
B1
B1
A1
A1
A2
A2
B2

B2
B1
B1
B1
B1
A1
A1
B2
B2
B2
B2
A2
A2
A2
A2
Lịch 3 không khả tuần tự
T1 không thể khóa các bộ chưa tồn tại
Khóa tòan bộ quan hệ để tránh việc thêm và xóa bộ
Khóa chết (Deadlock)
T1
T1
T2
T2
(1)
(1)
Lock(X)ok
Lock(X)ok
(2)
(2)
Lock(Y) ok

Lock(Y) ok
(3)
(3)
Lock(Y) chờ
Lock(Y) chờ
(4)
(4)
Lock(X) chờ
Lock(X) chờ
T1 chờ T2; T2 chờ T1 => khóa chết
Các giải pháp xử lý khóa
chết

Phát hiện khóa chết

Xây dựng đồ thị chờ (waiting graph)

Nút = Giao tác

Cung : Ti → Tj nếu Tj chờ Ti

Phát hiện chu trình trong đồ thị

Chọn một giao tác để hủy (abort)

Thực hiện lại giao tác bị hủy sau đó

Ngăn ngừa khóa chết

Nghi thức khóa hai giai đọan nghiêm ngặt

(strict-2PL)
SQL và giao tác

Bắt đầu giao tác tường minh (Begin Transaction)

Kết thúc một giao tác

Định ngầm (sau mỗi lệnh)

Tường minh : COMMIT hoặc ROLLBACK

Lọai và cấp độ độc lập của một giao tác

Lệnh khóa và giải phóng tường minh

Đơn vị khóa ? Bộ, quan hệ trang, đọan

Khóa phân cấp

SQL2: SET TRANSACTION <mode><isolation>
mode:

READ ONLY

READ WRITE

Isolation level
SQL2:Mức độ độc lập

SERIALIZABLE :


T thỏa nghi thức khóa 2 giai đọan.

REPEATABLE READ :

T chỉ chỉ đọc các đối tượng của các giao tác đã commit.

Không có một đối tượng nào được T đọc hoặc sửa đổi
lại được sửa đổi bơi một giao tác khác

READ COMMITED : như REPEADTABLE READ
nhưng cho phép một giao tác khác sửa các đối
tượng mà T đã đọc hoặc sửa đổi

READ UNCOMMITED : T có thể đọc các đối
tượng đang bị thay đổi bởi các giao tác khác

Ví dụ
SET TRANSACTION READ ONLY ISOLATION LEVEL SERIALIZABLE
SET TRANSACTION READ WRITE ISOLATION LEVEL READ COMMITED
SQL2: Isolation level
M cứ
M cứ
Dirty
Dirty
read
read
Unrepeate
Unrepeate
d read

d read
Phantom
Phantom
READ
READ
UNCOMMITED
UNCOMMITED
Posible
Posible
Posible
Posible
Posible
Posible
READ
READ
COMMITED
COMMITED
NO
NO
NO
NO
Posible
Posible
REPEATABLE
REPEATABLE
READ
READ
NO
NO
NO

NO
Posible
Posible
SERIALIZABLE
SERIALIZABLE
NO
NO
NO
NO
NO
NO
Khóa trên cây phân cấp

Ý chính : các đối tượng của CSDL được
tổ chức phân cấp

Hai phương thức:

Khóa một nút trên cấy phân cấp không ảnh
hưởng đến các nút con của nó

Khóa một nút của cây dẫn đến việc khóa tất
cả các nút con của nút đó
Khóa phân cấp đơn giản

Nghi thức :

Ngọai trừ nút gốc, một giao tác chỉ có thể
khóa một nút nếu nó đă giữ một khóa trên
nút cha của nút đó


Không một nút nào bị khóa hai lần bởi cùng
một giao dịch

Một lịch lập từ các giao tác thỏa nghi
thức khóa phân cấp đơn giản thì khả
tuần tự
Ví dụ
T1
T1
T2
T2
T3
T3
Lock(A)
Lock(A)
Lock(B)
Lock(B)
Lock(D)
Lock(D)
Unlock(B)
Unlock(B)
Lock(B)
Lock(B)
Lock(E)
Lock(E)
Unlock(D)
Unlock(D)
Lock(F)
Lock(F)

Unlock(A)
Unlock(A)
Lock(G)
Lock(G)
Unlock(C)
Unlock(C)
Unlock(E)
Unlock(E)
Lock(E)
Lock(E)
Unlock(F)
Unlock(F)
Unlock(B)
Unlock(B)
Unlock(G)
Unlock(G)
Unlock(E)
Unlock(E)
A
B C
D E
F G
T1 T2
T3
Khóa phân cấp tòan bộ một cây con

Lock, Khóa một nút => khóa tất cả các
nút con trên các mức con của nút đó

Warn, đặt một cảnh báo trên các nút

« cấp trên » của nút xin khóa để tránh
tranh chấp

Unlock, giải phóng một Lock hoặc Warn
Nghi thức cảnh báo

Nghi thức

Bắt đầu bằng đặt một Lock hoặc một Warn tại nút
gốc

Chỉ đặt được một lock hoặc một Warn trên một mục
khi đă giữ một cảnh báo trên nút cha của nút đó

Chỉ giải phóng một Lock hoặc một Warn khi không
còn giữ một khóa hoặc một cảnh báo nào trên các
nút con của nút đó

Tuân theo nghi thức 2PL

Định lý : Một lịch lập từ n giao tác tuân thủ
nghi thức cảnh báo thì khả tuần tự
Các giao tác được phân tán

Một giao tác kích họat tại một vị trí sẽ tạo
ra các giao tác trên các các vị trí khác như
các giao tác cục bộ

Giao tác tòan cục = hội của nhiều giao tác
cục bộ


Vị trí giao tác tòan cục kích hoạt giữ vai trò
« người điều phối »

Các ví trí có các giao tác cục bộ phát sinh
được gọi là các « người tham dự »

Giao tác tòan cục COMMIT khi và chỉ khi
tất cả các giao tác cục bộ COMMIT tại các
nút tham gia

×