Professional Documents
Culture Documents
Ts. Nguyễn An Tế
Nguyễn Tiến Dũng
Nguyễn Thúy Ngọc
Mục tiêu
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
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
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 đề
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 5
Khách A
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.)
t1 t1
t1
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 7
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.)
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
Trường hợp 1
● Đặt chỗ
D := D – 5
●...
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.)
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
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.)
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
Khi đó, trạm 1 đặt thêm 3 chỗ và trạm 2 trả lại 1 chỗ
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’
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
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
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
Begin transaction
● Cập nhật dữ liệu 1
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
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 19
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
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
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.)
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 23
Begin transaction T
Begin transaction T’
Begin 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.)
Begin transaction
● Đặt chỗ
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
Transactions :
- khóa dữ liệu và Khai thác dữ liệu ‘giả’
- COMMIT/ROLLBACK
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
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 27
Ví dụ 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] 28
3. Xử lý tranh chấp đồng thời (tt.)
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 29
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
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 31
● 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
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.)
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
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
● 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
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.)
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
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
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 39
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
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 41
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
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
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
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 45
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.)
Ứ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
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 49
thu_tu(Tk): thứ tự (hay nhãn thời gian – timestamp) của giao tác Tk
T1
T6
T8
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.)
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
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.)
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 53
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.)
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
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)
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
T2
th
T1
ứ
tự
ưu
T4
tiê
n
T3
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
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
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
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 63
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
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
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
lock A
lock B lock B
Ts. Ng.An Tế - Ng.Tiến Dũng - Ng. Thúy Ngọc (2010) [HQTCSDL-Bài 6: Giao tác] 68