Bài giảng Cơ sở dữ liệu phân tán - Chương 4: Điều khiển tương tranh

Các tính chất của giao tác: ACID

a. Tính nguyên tố(Atomic)

- 1 giao tác là 1 đơn vị xử lý không thể chia nhỏ được nữa; hoặc là tất cả các thao tác trong

giao tác được thực hiện (được ghi nhận chắc chắn), hoặc là không có thaotác nào được ghi nhận

kết quả.(Nếu chia nhỏ giao tác thành các thao tác thì sẽ không đảm bảo tính nhất quán của

CSDL.)

b. Tính nhất quán (Consistency)

- Giao tác chuyển CSDL từ tình trạng nhất quán này sang tình trạng nhất quán khác.

c. Tính cô lập (Isolation)

- Các giao tác xử lý đồng thời phải độc lập với những thay đổi được thựchiện bởi cácgiao tác

chưa hoàn tấtkhác (những thay đổi này chưa hình thành nên 1 trạng thái nhất quán của CSDL).

d. Tính lâu dài, bền vững(Durability)

- Tất cả những thay đổi lên CSDL mà giao tác thực hiện cho đến khi được xác nhận hoàn tất

(commit) thì phải được ghi nhận chắc chắn lên CSDL.

pdf17 trang | Chuyên mục: Cơ Sở Dữ Liệu Phân Tán | Chia sẻ: dkS00TYs | Lượt xem: 5092 | Lượt tải: 2download
Tóm tắt nội dung Bài giảng Cơ sở dữ liệu phân tán - Chương 4: Điều khiển tương tranh, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
A) 
Unlock (A) 
 Unlock (A) 
b. Thuật toán kiểm tra tính khả tuần tự của lịch S: 
Xây dựng 1 đồ thị có hướng G, mỗi giao tác Ti là một node. 
- T là 1 tập các giao tác T1, T2, …, Tn. Xét các thao tác Oij có dạng Lock(A), Unlock (A) 
(không quan tâm các thao tác khác) 
- Nếu Ti có 1 thao tác có dạng Unlock(A), Tj có thao tác tiếp theo sau đó có dạng Lock(A) 
(cùng đơn vị dữ liệu A) thì vẽ 1 cung có hướng đi từ Ti đến Tj (i.e., Ti phải thực hiện trước Tj). 
- Lịch thao tác khả tuần tự ĩ Đồ thị không có chu trình. 
Ø Ví dụ 1: 
Ng 
Duc
 Thu
an
CSDLPT-Điều khiển tương tranh 12 
T1 T2 
Lock A 
Read A à a1 
Unlock A 
 Lock A 
 Read A à a2 
 a2+1à a2 
 Write a2 à A 
 Unlock A 
A1+1à a1 
Lock A 
Write a1àA 
Unlock A 
T1 T2
Ø Ví dụ 2: 
T1 T2 T3 T4 
 Lock A (1) 
 Lock A (2) 
 Lock B (3) 
 Unlock A (4) 
 Unlock B (5) 
Lock B (6) 
 Unlock A (7) 
 Lock B (8) 
Lock A (9) 
 Unlock B (10) 
Lock C (11) 
Unlock A (12) 
 Lock A (13) 
 Unlock A (14) 
Unlock B (15) 
Unlock C (16) 
Ng 
Duc
 Thu
an
CSDLPT-Điều khiển tương tranh 13 
T1 T2
T4 T3
Những cung liền nét: xác định được từ thuật toán 
Những cung đứt nét: Khi T3 thực hiện lệnh Lock 
A (2) thì T2 đang giữ khóa A nên bắt buộc T3 
phải thực hiện sau T2 
=> Chỉ cần thực hiện theo thuật toán (T2 ® T3 
® T1 ® T4) 
3. Kỹ thuật khóa đọc/ viết (Readlock/Writelock): 
a. Giới thiệu: 
- Nếu không phân biệt khóa cho thao tác đọc hay viết thì rõ ràng sẽ có nhiều giao tác phải 
chờ để được quyền khóa trên một đơn vị dữ liệu. Thưc tế là nhiều khi một giao tác chỉ cần lấy 
giá trị của 1 đơn vị dữ liệu nhưng không thay đổi giá trị đó. Vì vậy để giảm bớt tình huống phải 
chờ khi các giao tác cùng đọc dữ liệu, người ta đề nghị tách yêu cầu khóa thành 2 yêu cầu khóa 
riêng biệt: 
· Khóa để đọc (hay Shared lock): một giao tác T chỉ muốn đọc một đơn vị dữ liệu A sẽ 
thực hiện lệnh RLOCK(A), ngăn không cho bất kỳ giao tác khác ghi giá trị mới của A trong khi 
T đã khóa A. Tuy nhiên các giao tác khác vẫn có thể giữ 1 khóa đọc trên A cùng lúc với T. 
· Khóa để ghi (hay Exclusive lock): một giao tác T muốn thay đổi giá trị của một đơn vị 
dữ liệu A đầu tiên sẽ lấy khóa ghi bằng cách thực hiện lệnh WLOCK(A). Khi 1 giao tác đang 
giữ 1 khóa ghi trên 1 đơn vị dữ liệu, các giao tác khác không thể lấy được khóa đọc hoặc khóa 
ghi trên A cùng lúc với T. 
 Cả hai khóa đọc và khóa ghi đều được loại bỏ bằng lệnh UNLOCK. 
Ø Điều kiện để xin khóa đọc/ viết: 
 + Một yêu cầu xin RLOCK(A) chỉ được chấp thuận nếu A chưa bị khóa bởi 1 WLOCK trước 
đó. 
 + Một yêu cầu xin WLOCK(A) chỉ được chấp thuận nếu A được tự do. 
- Ma trận tương thích các loại khóa: 
 Lock đang được giữ 
 R-lock W-lock 
R-lock Yes No Giao tác yêu cầu 
lock W-lock No No 
Ø Từ ma trận tương thích, chúng ta thấy rằng: 1 đơn vị dữ liệu tại 1 thời điểm có thể có nhiều 
transaction giữ Rlock nhưng chỉ có tối đa 1 transaction giữ Wlock. 
Ø Việc sử dụng cơ chế lock không đủ để bảo đảm tính khả tuần tự cho lịch thao tác. 
Ví dụ: Lịch thao tác không khả tuần tự nên xảy ra lost update 
Ng 
Duc
 Thu
an
CSDLPT-Điều khiển tương tranh 14 
T1 T2 Ghi chú 
Rlock B 
Read B à a1 a1=B=2 
Unlock B 
 Rlock B 
 Read B à a2 a2=B=2 
 Unlock B 
 a2+1àa2 a2 = 3 
 Wlock B 
 Write a2 à B B = a2 = 3 
 Unlock B 
a1+1àa1 a1 = 3 
Wlock B 
Write a1 à B B = a1 = 3 (Lost Update) 
Unlock B 
b. Thuật toán kiểm tra tính khả tuần tự của lịch S: 
- Input: Một lịch S được lập từ n giao tác T1, T2, …, Tn (Ti tuân thủ kỹ thuật khóa Wlock, 
Rlock). 
- Output: S có khả tuần tự hay không ? 
- Xây dựng một dồ thị có hướng G, mỗi giao tác Ti là một node. 
+ Nếu có 1 giao tác Ti phát ra yêu cầu Rlock(A), “ngay” sau đó có 1 giao tác Tj phát ra yêu cầu 
Wlock(A) thì sẽ có 1 cung đi từ Ti đến Tj. 
+ Nếu có 1 giao tác Ti phát ra yêu cầu Wlock(A), “ngay” sau đó có 1 giao tác Tj phát ra yêu 
cầu Wlock(A) hoặc Rlock (A) thì sẽ có 1 cung đi từ Ti đến Tj. 
Lịch S không khả tuần tự khi đồ thị không có chu trình. 
4. Một số vấn đề trong kỹ thuật khóa: 
a. Livelock: 
- Hệ thống trao và buộc khóa các đơn vị dữ liệu không thể hoạt động một cách thất thường, 
nếu không thì các hệ thống không mong muốn có thể sẽ xảy ra. Giả sử trong ví dụ trên, khi T1 
giải phóng khóa trên A, khóa này được trao lại cho T2. Điều gì sẽ xảy ra nếu như trong khi T2 
đang đợi nhận khóa, một giao tác T3 khác cũng xin một khóa trên A, và T3 lại được trao khóa 
này trước T2. Rồi sau khi T3 được trao khóa trên A thì lại có 1 giao tác T4 xin khóa trên A, v…v… 
Và rất có thể T2 phải đợi mãi và cha úng bao giờ nhận được khóa trong khi luôn có 1 giao tác 
khác giữ khóa trên A, dù rằng có 1 số lần T2 có cơ hội nhận được khóa trên A. 
- Như vậy, Livelock là trường hợp 1 giao tác chờ được cấp quyền lock trên 1 đơn vị dữ liệu nào 
đó mà không xác định được thời điểm được đáp ứng yêu cầu. Nó có thể xảy ra âm thầm trong 1 
môi trường có nhiều tiến trình thực hiện cùng một lúc. Chúng ta có thể sử dụng một chiến lược 
đơn giản để tránh livelock, đó là yêu cầu hệ thống khi trao khóa phải ghi nhận tất cả các thỉnh 
cầu chưa được đáp ứng, và khi đơn vị dữ liệu A được mở khóa thì trao cho các giao tác đã xin 
đầu tiên trong số những giao tác đang đợi khóa A. Và khi đó bộ lập lịch (schedulers) sẽ tiến 
hành thực hiện cơ chế: giao tác nào yêu cầu trước thì được đáp ứng trước (FIFO). 
Ng 
Duc
 Thu
an
CSDLPT-Điều khiển tương tranh 15 
b. Deadlock: 
- Xét ví dụ sau: 
T1 T2 Nhận xét 
Lock A 
 Lock B 
 Lock A 
Lock B 
- T1 chờ T2 unlock B 
- T2 chờ T1 unlock A 
=> Deadlock 
T1 yêu cầu và được trao khóa trên A, còn T2 yêu cầu và được trao khóa trên B. Do đó khi 
T1 yêu cầu khóa trên B, nó sẽ phải đợi vì T2 đã khóa B. Tương tự khi T2 yêu cầu khóa trên A, 
nó cũng buộc phải đợi vì T1 đã khóa A. Kết quả là không một giao tác nào tiếp tục hoạt động 
được: mỗi giao tác đều phải đợi cho giao tác kia mở khóa, và chúng đều phải đợi nhưng chẳng 
bao giờ nhận được khóa như yêu cầu. 
- Như vậy, Deadlock là tình trạng trong đó những giao tác có liên quan không thể thực hiện 
tiếp các thao tác của nó mà phải chờ nhau mãi. Chúng ta có thể giải quyết Deadlock bằng cách: 
bỏ qua (hủy, làm lại tất cả); ngăn ngừa Deadlock bằng cách để cho các giao tác chờ theo 1 
chiều nhất định; phát hiện Deadlock bằng cách dùng đồ thị chờ (wai-for graph), nếu có chu 
trình thì hủy đỉnh (giao tác) có nhiều cung vào hay ra. 
5. Bộ lập lịch (schedulers) và nghi thức (protocol): 
- Khi thực hiện đồng thời các transaction phát sinh các vấn đề như livelock, deadlock hay lịch 
thao tác không khả tuần tự. Để giảm bớt những vấn đề này, ta có 2 công cụ: bộ lập lịch và nghi 
thức. 
a. Bộ lập lịch (schedulers): là thành phần của hệ thống CSDL giải quyết các yêu cầu đụng độ. 
Bộ lập lịch loại bỏ Livelock bằng cách ép các transaction phải chờ trong trường hợp không đáp 
ứng được yêu cầu lock, hoặc hủy bỏ các transaction (khi xảy ra deadlock và tính không khả 
tuần tự). 
Lock
Table
Lock
Manager
Scheduler
Các Transaction thực hiện theo protocol Yêu cầu lock
Cho phép hay
từ chối lock
Cho phép truy xuất, chờ
hay rollback giao tác
Yêu cầu lock
b. Nghi thức (protocol): giải quyết vấn đề deadlock và tính không khả tuần tự. Ví dụ như 
chiến lược lock 2 pha, hoặc yêu cầu các giao tác lock các đơn vị dữ liệu theo 1 thứ tự cố định 
nào đó. 
Ng 
Duc
 Thu
an
CSDLPT-Điều khiển tương tranh 16 
6. Nghi thức lock 2 giai đoạn (2 phase): 
phase lock phase unlock
BOT EOT
Số các
đơnvị
dữ liệu
bị giữ
lock
t
Ø Nghi thức khóa 2 giai đoạn (lock 2 phase): 1 giao tác thực hiện cơ chế lock 2 phase là 1 
giao tác không thực hiện 1 lock nào nữa sau khi đã unlock (thực hiện xong hết tất cả các yêu cầu 
lock rồi mới tiến hành unlock). Các giao tác tuân theo nghi thức này được gọi là các giao tác hai 
pha: pha ban đầu là pha khóa, pha sau là pha mở khóa. 
Ví dụ: 
T1 T2 T3 
 Lock (A) 
 Unlock(A) 
 Lock (A) 
 Unlock (A) 
Lock (B) 
Unlock (B) 
 Lock (B) 
Thời gian 
 Unlock (B) 
 Trong ví dụ trên, T1 và T3 là các giao tác 2 pha, còn T2 thì không. 
Ø Phát biểu: Một lịch S được lập từ n giao tác thỏa nghi thức khóa 2 pha thì khả tuần tự. 
Chứng minh: 
- Ví dụ cho 1 tập các giao tác T1, T2, …, Tn. Giả sử dồ thị có chu trình: 
T1 T2 T3 Ti Tn... ...
- T1 thực hiện trước T2: T2 thực hiện lock trên 1 số đvdl nào đó được unlock bởi T1 
- T2 thực hiện trước T3: T3 thực hiện lock trên 1 số đvdl nào đó được unlock bởi T2 
- … 
- Tương tự, T1 thực hiện lock trên 1 số đvdl nào đó được unlock bởi Tn 
=> T1 có dạng Lock … … Unlock … …Lock… 
=> T1 không phải lock 2 pha 
Ø Sử dụng nghi thức lock 2 giai đoạn chỉ có thể đảm bảo tính khả tuần tự cho lịch thao tác 
nhưng không thể bảo đảm không xảy ra vấn đề deadlock 
Ng 
Duc
 Thu
an
CSDLPT-Điều khiển tương tranh 17 
Ø Ví dụ: 
T1 T2 Ghi chú 
Lock A 
 Lock B 
Lock B T1 phải chờ T2 unlock B 
 Lock A T2 phải chờ T1 unlock A => deadlock 
Unlock A 
 Unlock B 
Unlock B 
 Unlock A 

File đính kèm:

  • pdfBài giảng Cơ sở dữ liệu phân tán - Chương 4 Điều khiển tương tranh.pdf
Tài liệu liên quan