You are on page 1of 34

Trường Đại học Sư phạm thành phố Hồ Chí Minh

Khoa Công ngh thông tin

CÁC HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Bài 6 : GIAO TÁC (transaction)

Ts. Nguyễn An Tế
Nguyễn Tiến Dũng
Nguyễn Thúy Ngọc

Mục tiêu

● Hiểu được ý nghĩa sử dụng giao tác


● Hiểu tính chất và các thành phần trong giao tác
● Vận dụng giao tác trong khai thác CSDL

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 2
Tài liệu tham khảo

[1] Ramez Elmasri, Shamkant B. Navathe, Fundamentals of


Database Systems (ch. 17, 18), 4th Edition, 2004.

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 3

Nội dung

1. Giới thiệu
1.1 Đặt vấn đề
1.2 Giao tác

2. Những khái niệm cơ bản

3. Xử lý tranh chấp đồng thời

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 4
1.1 Đặt vấn đề

Đặt vé máy bay

đặt chỗ thanh toán


chọn chuyến bay

cập nhật số chỗ


xuất vé

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 5

1.1 Đặt vấn đề (tt.)

chọn ch.bay đặt chỗ


(D) thanh toán

Khách A

cập nhật số chỗ

xuất vé

chọn ch.bay
(D)

…………….
kiểm tra
thanh toán
Khách B đặt chỗ

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 6
1.1 Đặt vấn đề (tt.)

Nhiều người dùng truy cập dữ liệu cùng thời điểm

Môi truờng multi-user CSDL lớn

t1 t1
t1

TRANH CHẤP TÀI NGUYÊN

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 7

1.1 Đặt vấn đề (tt.)

Môi truờng multi-user

tập trung phân tán

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 8
1.1 Đặt vấn đề (tt.)

Mất dữ liệu Số liệu tổng hợp


đã cập nhật không chính xác
(Lost Update Problem) (Incorrect Summary
Problem)

Khai thác
VẤN ĐỀ
dữ liệu ‘giả’
(Dirty Read Problem)

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 9

1.1 Đặt vấn đề (tt.)

Trường hợp 1

● Chọn chuyến bay (còn chỗ)


read(D) // với số chỗ còn lại D > 0

● Đặt chỗ
D := D – 5

If (thanh toán thành công)


write(D)

●...

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 10
1.1 Đặt vấn đề (tt.)

D : số chỗ còn lại (D=80)


● Mất dữ liệu đã cập nhật

read(D)
kiểm tra write(D)
Khách A D:=D-5
(đặt 5) thanh toán
(=?)
read(D)
kiểm tra
Khách B write(D)
(hủy 4)
D:=D+4 thanh toán
(=?)

t1 t2 t3 t4 thời gian
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 11

1.1 Đặt vấn đề (tt.)

Trường hợp 2
● Chọn chuyến bay (còn chỗ)
read(D) // với số chỗ còn lại D > 0

● Đặt chỗ
D := D – 5
write(D)
If (thanh toán thành công)
Xuất vé
Else
{ D := D + 5
write(D) }
●...
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 12
1.1 Đặt vấn đề (tt.)

D : số chỗ còn lại (D=80)


● Khai thác dữ liệu ‘giả’

read(D) D:=D+5
Khách A thanh toán
D:=D-5 (=?) write(D)
thất bại
write(D)
read(D)
Khách B
D:=D+4 (=?)
write(D)

t1 t2 t3 thời gian
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 13

1.1 Đặt vấn đề (tt.)

● Số liệu tổng hợp không chính xác


W1, W2,…, Wn là số chỗ đã đặt ở trạm 1, trạm 2, …, trạm n

Tính tổng số vé đã đặt của tất cả các trạm Zn= W1+W2+…+Wn

 Tính được tới trạm 4: Z4= W1+W2+W3+W4

 Khi đó, trạm 1 đặt thêm 3 chỗ và trạm 2 trả lại 1 chỗ

 Tại trạm n: Zn = Z4 + W5 +…+Wn

 Zn không còn chính xác

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 14
1.1 Đặt vấn đề (tt.)

● Yêu cầu DBMS hỗ trợ chức năng giải quyết tranh chấp

‘đúng đắn’

‘ổn định’
GIAO TÁC
‘an toàn’

‘thời gian đáp ứng’

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 15

Nội dung

1. Giới thiệu
1.1 Đặt vấn đề
1.2 Giao tác

2. Những khái niệm cơ bản

3. Xử lý tranh chấp đồng thời

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 16
1.2 Giao tác

Begin transaction
● Cập nhật dữ liệu 1

● Cập nhật dữ liệu 2


Đơn vị THÀNH CÔNG
xử lý ● Cập nhật dữ liệu 3

● Cập nhật dữ liệu …

End transaction

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 17

1.2 Giao tác (tt.)

Begin transaction
● Cập nhật dữ liệu 1

● Cập nhật dữ liệu 2


Đơn vị
xử lý ● Cập nhật dữ liệu 3 THẤT BẠI

● Cập nhật dữ liệu …

End transaction

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 18
Nội dung

1. Giới thiệu

2. Những khái niệm cơ bản

3. Xử lý tranh chấp đồng thời

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 19

2. Những khái niệm cơ bản

● Các tính chất ACID

Atomicity (nguyên tố)

Consistency (nhất quán)

Isolation (cô lập)

Durability (bền vững)


Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 20
2. Những khái niệm cơ bản (tt.)

Atomicity: hoặc tất cả các xử lý trong giao tác được hoàn tất
hoặc không có bất kỳ xử lý nào được thực hiện

Consistency: giao tác sau khi hoàn thành phải đảm bảo
sự nhất quán của CSDL

Isolation: một giao tác khi thực hiện sẽ độc lập


với các giao tác khác đang thực hiện đồng thời

Durability: mọi thay đổi về dữ liệu khi giao tác hoàn tất
phải được ghi nhận bền vững trên CSDL

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 21

2. Những khái niệm cơ bản (tt.)

● Thành phần của giao tác

Begin transaction: bắt đầu giao tác

Read/Write: các thao tác đọc/ghi trong giao tác

End transaction: kết thúc giao tác

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 22
2. Những khái niệm cơ bản (tt.)

Commit: kết thúc thành công giao tác

Dữ liệu sẽ được ghi nhận trên CSDL

Rollback/Abort: giao tác bị thất bại

Khi có 1 thao tác trong giao tác không hoàn tất


 trở về trạng thái trước khi giao tác bắt đầu

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 23

2. Những khái niệm cơ bản (tt.)

Begin transaction T

Begin transaction T’
Begin transaction T’’

commit T’’ rollback T’’

End transaction T’’


rollback T’
End transaction T’
commit T
End transaction T

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 24
2. Những khái niệm cơ bản (tt.)

● Chọn chuyến bay

Begin transaction
● Đặt chỗ

● Khóa đặt chỗ chuyến bay

If thanh toán thành công


commit
Else
rollback

● Mở khóa đặt chỗ chuyến bay

End transaction
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 25

2. Những khái niệm cơ bản (tt.)

Bị mất dữ liệu đã cập nhật

Transactions :
- khóa dữ liệu và Khai thác dữ liệu ‘giả’
- COMMIT/ROLLBACK

Số liệu tổng hợp không chính xác

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 26
Nội dung

1. Giới thiệu

2. Những khái niệm cơ bản

3. Xử lý tranh chấp đồng thời


3.1 Lịch thao tác
3.2 Các phương pháp
3.3 Vấn đề deadlock

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 27

3. Xử lý tranh chấp đồng thời

Ví dụ tranh chấp

giao dịch ngân hàng

đặt vé máy bay

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 28
3. Xử lý tranh chấp đồng thời (tt.)

● 2 hành động được gọi là tranh chấp nếu thỏa mãn


tất cả 3 điều kiện:

Thuộc 2 giao tác khác nhau

Cùng truy cập vào dữ liệu D

Có ít nhất một hành động là ghi

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 29

3. Xử lý tranh chấp đồng thời (tt.)

● Tình huống xảy ra tranh chấp đồng thời

Giao tác T1 Giao tác T2 Nhận xét


Đọc Đọc Không xảy ra tranh chấp

Đọc Ghi Có xảy ra tranh chấp

Ghi Đọc Có xảy ra tranh chấp

Ghi Ghi Tại một thời điểm chỉ có 1 giao tác được ghi
trên 1 đơn vị dữ liệu

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 30
Nội dung

1. Giới thiệu

2. Những khái niệm cơ bản

3. Xử lý tranh chấp đồng thời


3.1 Lịch thao tác
3.1.1 Phân loại lịch thao tác
3.1.2 Thuật toán phát hiện tranh chấp

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 31

3.1 Lịch thao tác (Schedule)

● Lịch thao tác S của n giao tác T1, T2,…, Tn là tập hợp
tất cả các thao tác của mỗi Tk

T2

Ví dụ: S = { r1(D), r2(D), w1(D), w2(D), w1(E), c2, a1 }

r, w, c, a viết tắt read, write, commit, abort


T1

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 32
3.1 Lịch thao tác (tt.)

Ví dụ: S = { r1(D), r2(D), w1(D), w2(D), w1(E) }

● Các tranh chấp (có thể xảy ra) trong S:


r1(D) và w2(D)
r2(D) và w1(D)
w1(D) và w2(D)

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 33

Nội dung

1. Giới thiệu

2. Những khái niệm cơ bản

3. Xử lý tranh chấp đồng thời


3.1 Lịch thao tác
3.1.1 Phân loại lịch thao tác
3.1.2 Thuật toán phát hiện tranh chấp

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 34
3.1.1 Phân loại lịch thao tác

Lịch tuần tự Lịch không tuần tự


(serial) (nonserial)

● Tất cả hành động trong giao ● Các hành động trong giao tác
tác Tk đuợc theo sau bởi tất Tk có thể thực hiện xen kẽ với
cả hành động của giao tác Tj các hành động của giao tác Tj

● (+) độc lập, k.quả chính xác ● (+) dùng nhiều trong thực tế
● (-) ít sử dụng trong thực tế ● (-) phải giải quyết tranh chấp

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 35

3.1.1 Phân loại lịch thao tác (tt.)

Lịch thao tác tuần tự

read(D)
T1 D:=D-N
write(D)

read(D)
T2
D:=D+M
write(D)
thời gian

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 36
3.1.1 Phân loại lịch thao tác (tt.)

Lịch thao tác không tuần tự

read(D) write(D) Y:=Y+N


T1
D:=D-N read(E) write(E)

T2 read(D) write(D)
D:=D+M

thời gian

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 37

Nội dung

1. Giới thiệu

2. Những khái niệm cơ bản

3. Xử lý tranh chấp đồng thời


3.1 Lịch thao tác
3.1.1 Phân loại lịch thao tác
3.1.2 Thuật toán phát hiện tranh chấp

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 38
3.1.2 Thuật toán phát hiện tranh chấp

● Đồ thị G biểu diễn thứ tự (precedence graph) của lịch S

− Đỉnh là giao tác Tk tham gia trong S


− Cạnh từ TkTj : nếu Tj read(D) ‘sắp sau’ Tk write(D)
hay Tj write(D) ‘sắp sau’ Tk read(D)
hay Tj write(D) ‘sắp sau’ Tk write(D)

S có tính tuần tự nếu G không có chu trình

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 39

3.1.2 Thuật toán phát hiện tranh chấp (tt.)

T1 T2 T3
Ví dụ 1
read(E)
read(F)
read(D)
write(D)
write(E)
write(F)
read(F)
read(E)
write(E)
read(E)
write(E)
read(D)
thời gian write(D)
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 40
3.1.2 Thuật toán phát hiện tranh chấp (tt.)

Ví dụ 1
D, E
T1 T2

E, F
E

T3

Lịch có tính tuần tự vì không có chu trình

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 41

3.1.2 Thuật toán phát hiện tranh chấp (tt.)

T1 T2 T3
Ví dụ 2
read(F)
read(E)
write(E)
read(E)
read(F)
read(D)
write(D)
write(E)
write(F)
read(D)
read(E)
write(E)
thời gian write(D)
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 42
3.1.2 Thuật toán phát hiện tranh chấp (tt.)

E
Ví dụ 2
T1 T2
D

E, F
E

T3

Lịch không có tính tuần tự vì có 2 chu trình

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 43

Nội dung

1. Giới thiệu

2. Những khái niệm cơ bản

3. Xử lý tranh chấp đồng thời


3.1 Lịch thao tác
3.2 Các phương pháp
3.3 Vấn đề deadlock

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 44
3.2 Các phương pháp

lock(D)=0: dữ liệu D đuợc phép truy cập

lock(D)=1: dữ liệu D không đuợc phép truy cập

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 45

3.2 Các phương pháp (tt.)

● Quy tắc hoạt động của Binary locks

oNếu lock(D)=0 thì giao tác Tk có thể truy cập


và đổi trạng thái lock(D) thành 1

oNếu lock(D)=1 thì giao tác Tk phải đợi cho đến khi
lock(D) được đổi thành 0 (bởi Tj)

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 46
3.2 Các phương pháp (tt.)

Khi Tk khóa dữ liệu D, Tj có quyền đọc D


nhưng không có quyền cập nhật D tại cùng thời điểm
Shared lock

Khi Tk khóa dữ liệu D, Tj không có quyền đọc


hay cập nhật D tại cùng thời điểm
Exclusive lock

Dữ liệu D đuợc mở khóa


Unlock
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 47

3.2 Các phương pháp (tt.)

Ứng dụng ?
Exclusive lock

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 48
3.2 Các phương pháp (tt.)

DBMS xác định thứ tự bắt đầu thực hiện của các giao tác

Đánh số thứ tự tăng dần Sử dụng ngày giờ của hệ thống

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 49

3.2 Các phương pháp (tt.)

thu_tu(Tk): thứ tự (hay nhãn thời gian – timestamp) của giao tác Tk

T1

T6
T8

T4

thu_tu(T1) ≤ thu_tu(T6) ≤ thu_tu(T8) ≤ thu_tu(T4)

thời gian

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 50
3.2 Các phương pháp (tt.)

● Xử lý tranh chấp bằng nhãn thời gian

read_ts(D): nhãn thời gian MAX có chứa thao tác đọc D thành công
read_ts(D)=thu_tu(Tk) với Tk chứa thao tác sau cùng đọc D thành công

write_ts(D): nhãn thời gian MAX có chứa thao tác ghi D thành công
write_ts(D)=thu_tu(T) với Tk chứa thao tác sau cùng ghi D thành công

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 51

3.2 Các phương pháp (tt.)

 T chứa thao tác write(D)

o Nếu (thu_tu(T) < read_ts(D)) hay (thu_tu(T) < write_ts(D))


 abort/rollback T

T : write(D) T’: read(D) T’: write(D)

thu_tu(T) thu_tu(T’) = read_ts(D) thu_tu(T’) = write_ts(D)

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 52
3.2 Các phương pháp (tt.)

 T chứa thao tác write(D) (tt.)

oNếu (read_ts(D) ≤ thu_tu(T)) và (write_ts(D) ≤ thu_tu(T))


 T: write(D) thành công và write_ts(D) := thu_tu(T)

T’: read(D) T’: write(D) T : write(D)

thu_tu(T’) = read_ts(D) thu_tu(T’) = write_ts(D) thu_tu(T)

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 53

3.2 Các phương pháp (tt.)

 T chứa thao tác read(D)

oNếu (thu_tu(T) < write_ts(D))


 abort/rollback T

T: read(D) T’: write(D)

thu_tu(T’) = write_ts(D)

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 54
3.2 Các phương pháp (tt.)

 T chứa thao tác read(D) (tt.)

oNếu (write_ts(D) ≤ thu_tu(T))


 T: read(D) thành công và read_ts(D) := MAX(thu_tu(T), read_ts(D))

T’: write(D) T: read(D)

thu_tu(T’) = write_ts(D)

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 55

Nội dung

1. Giới thiệu

2. Những khái niệm cơ bản

3. Xử lý tranh chấp đồng thời


3.1 Lịch thao tác
3.2 Các phương pháp
3.3 Vấn đề deadlock

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 56
3.3 Vấn đề deadlock

Tk Tj

D1 D2

lock(D1) lock(D2)

chờ D2 được mở khóa Deadlock chờ D1 được mở khóa

D2 D1

lock(D2) lock(D1)
unlock(D1) unlock(D2)

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 57

3.3 Vấn đề deadlock (tt.)

T2
th

T1

tự
ưu

T4
tiê
n

T3

chờ đợi quá lâu…

Starvation

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 58
3.3 Vấn đề deadlock (tt.)

Tj

D2

Tk
lock(D2)

Tj halted
chờ D2 được mở khóa
Deadlock Unlock(D2)
D2

lock(D2)

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 59

3.3 Vấn đề deadlock (tt.)

● Phát hiện deadlock:

Đồ thị chờ (directed wait-for graph)


- Đỉnh là các giao tác Tk
- Cạnh TkTj : Tj đang giữ lock trên D và Tk muốn lock D

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 60
3.3 Vấn đề deadlock (tt.)

T1 T2 T3
lock (C)
read(C) T1 T2
lock (B)
read(B)
lock (A)
read(A)
lock (A)
lock (C)
T3
lock (A)
thời gian

deadlock KHÔNG xảy ra vì KHÔNG CÓ chu trình


Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 61

3.3 Vấn đề deadlock (tt.)

T1 T2 T3 T4
lock (A)
read(A)
lock (C)
read(C)
lock (B) lock (D)
read(B) read(D)
lock (A)
lock (C)
lock (A)
lock (B)
thời gian

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 62
3.3 Vấn đề deadlock (tt.)

T1 T2

T3
T4

deadlock xảy ra vì CÓ chu trình

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 63

3.3 Vấn đề deadlock (tt.)

● Cách ngăn ngừa deadlock

Time out

Wait-die

Wound-die

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 64
3.3 Vấn đề deadlock (tt.)

Time out

Giới hạn thời gian (tối đa) lock D đối với 1 giao tác Tk bất kỳ

Nếu 1 giao tác Tk giữ lock D vượt quá time out thì sẽ bị rollback

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 65

3.3 Vấn đề deadlock (tt.)

Wait-die
Giả sử Tj đang khóa D, và Tk cũng muốn khóa D
o Nếu thu_tu(Tk) < thu_tu(Tj): Tk được phép chờ
o Nếu thu_tu(Tk) > thu_tu(Tj): hủy Tk , bắt đầu lại tại th.điểm ≠ (nhãn không đổi)

T1 T2

lock B
lock A
lock A

thu_tu(T1) < thu_tu(T2) lock B thu_tu(T2) > thu_tu(T1)


chờ

unlock A

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 66
3.3 Vấn đề deadlock (tt.)

Wound-die

Giả sử Tj đang khóa D, và Tk cũng muốn khóa D


oNếu thu_tu(Tk) < thu_tu(Tj) thì Tj rollback và trao khóa lại cho Tk
oNếu thu_tu(Tk) > thu_tu(Tj) thì Tk được phép chờ

T1 (k) T2 (j) T1 (k) T2 (j)


lock B thu_tu(T2) > thu_tu(T1)
lock A lock B

lock A
lock B lock B

unlock B thu_tu(T1) > thu_tu(T2) chờ


unlock B
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 67

Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 68

You might also like