Thứ Tư, 12 tháng 2, 2014
bài giảng quản lý giao dịch
7. 5
Các trạng thái của một GD
Các trạng thái của một GD
■
Begin Transaction
■
…
■
Commit / Rollback
Hoạt
động
Hoàn tất
Hủy bỏ
Hoàn tất
một phần
Thất
bại
7. 6
Các thuộc tính của một GD
Các thuộc tính của một GD
■
Tính nguyên tử (Atomicity)
✦
Đảm bảo tất cả các thao tác hoặc không thao tác nào được
thực hiện
✦
Trách nhiệm: thành phần quản lý giao dịch.
■
Tính nhất quán (consistency)
✦
Đảm bảo một GD phải chuyển CSDL từ một trạng thái nhất
quán này sang một trạng thái nhất quán khác.
✦
Trách nhiệm: người lập trình ứng dụng hay người đã viết ra
giao dịch
7. 7
Các thuộc tính của một GD
Các thuộc tính của một GD
■
Tính cô lập (Isolation):
✦
Đảm bảo cho dù nhiều GD thực hiện song song cũng sẽ đưa
hệ thống đến một trạng thái tương đương với trạng thái có
được bằng cách thực hiện các giao dịch này một cách tuần tự.
✦
Trách nhiệm: thành phần quản lý cạnh tranh
■
Tính bền vững (Duration)
✦
Đảm bảo khi một GD hoàn tất, tất cả các cập nhật đã thực hiện
trên CSDL vẫn còn đó, ngay cả khi hệ thống có xảy ra sự cố
sau khi giao dịch đã hoàn tất.
✦
Trách nhiệm: thành phần quản lý phục hồi
7. 8
Các thành phần liên quan đến
Các thành phần liên quan đến
quản lý GD của DBMS
quản lý GD của DBMS
7. 9
Điều khiển cạnh tranh
Điều khiển cạnh tranh
■
Các lợi ích khi cho phép các GD thực hiện song song:
✦
Trong 1 GD, một vài bước liên quan tới hoạt động I/O; các
bước khác liên quan đến hoạt động CPU. CPU và các đĩa trong
một hệ thống có thể hoạt động song song. Tận dụng khả năng
đa chương trình, ta có thể tăng số lượng GD hệ thống có thể
thực hiện trong 1 khoảng thời gian.
✦
Thực hiện cạnh tranh làm giảm sự trì hoãn không lường trước
trong việc chạy các giao dịch, đồng thời làm giảm thời gian đáp
ứng trung bình
■
Tuy nhiên, nếu quản lý không tốt, các GD thực hiện đan
xen có thể dẫn hệ thống đến trạng thái không nhất quán.
7. 10
Lịch trình (Schedule)
Lịch trình (Schedule)
■
Lịch trình là một chuỗi các thao tác
thực hiện bởi một tập hợp các GD
cạnh tranh mà vẫn đảm bảo thứ tự
của các thao tác trong từng GD đơn
lẻ.
■
Lịch trình tuần tự (serial schedule)
là một lịch trình trong đó các thao tác
của một GD được thực hiện liên tiếp
nhau.
✦
Với một tập các giao dịch cho trước,
không có sự đảm bảo là kết quả của
tất cả các lịch trình tuần tự đều sẽ
giống nhau.
■
Lịch trình không tuần tự (nonserial
schedule) là một lịch trình trong đó
các thao tác từ một tập hợp các giao
dịch cạnh tranh đan xen lẫn nhau.
T
1
T
2
Read(A);
A:=A-50;
Write(A);
Read(B);
B:=B+50;
Write(B);
Read(A);
Temp:=A*0.1;
A:=A-temp;
Write(A);
Read(B);
B:=B+temp;
Write(B);
Hình 3. L ch trình 1ị
7. 11
Vấn đề 1: Mất dữ liệu đã cập nhật
Vấn đề 1: Mất dữ liệu đã cập nhật
■
Kết quả của một thao tác cập nhật hoàn tất một cách
thành công bởi một người dùng có thể bị ghi đè lên bởi
một người dùng khác
■
A = 100 + 100 – 10 = 190
90Commit
90CommitWrite(A);
200Write(A);A:=A-10;
100A = A + 100 ;Read(A);
100Read(A);Begin Transaction
100Begin Transaction
TK AT
2
T
1
7. 12
Vấn đề 2: Phụ thuộc GD không hoàn tất
Vấn đề 2: Phụ thuộc GD không hoàn tất
■
Vấn đề về sự phụ thuộc vào các GD không hoàn tất xảy
ra khi một GD cho phép các GD khác nhìn thấy các kết
quả tạm thời trước khi nó hoàn tất.
■
A = 100 – 10 = 90
190Commit
190Write(A);
100RollbackA:=A-10;
200:Read(A);
200Write(A);Begin Transaction
100A = A + 100 ;
100Read(A);
100Begin Transaction
TK AT
4
T
3
7. 13
Vấn đề 3: Phân tích không nhất quán
Vấn đề 3: Phân tích không nhất quán
■
GD chỉ đọc được phép đọc một phần kết quả của các
GD chưa hoàn tất mà các GD này cùng lúc cũng đang
cập nhật CSDL. Điều này gọi là dirty read hay
unrepeatable read.
185355090Commit
185355090 Sum = Sum + Z
150355090 Read(Z)Commit
150355090 Write(Z);
150255090 Z = Z + 10
150255090 Sum = Sum + Y Read (Z)
100255090 Read(Y); Write (X);
1002550100 Sum = Sum + X X = X – 10 ;
02550100 Read(X); Read(X);
02550100 Sum = 0Begin Transaction
2550100Begin Transaction
SumZYXT
6
T
5
7. 14
Tính khả tuần tự
Tính khả tuần tự
■
Sự khả tuần tự (seriallizability):
✦
Mục tiêu: tìm ra các lịch trình không tuần tự cho phép các GD
thực hiện cạnh tranh mà vẫn không can thiệp lẫn nhau, và vì
vậy dẫn đến một tình trạng CSDL giống như sự thực thi tuần tự
có thể dẫn đến.
■
Lịch trình khả tuần tự (serializable schedule): là các
lịch trình không tuần tự cho phép các GD thực hiện cạnh
tranh nhưng vẫn cho kết quả giống như lịch trình tuần tự.
■
Có 2 kiểu khả tuần tự:
✦
Khả tuần tự xung đột
✦
Khả tuần tự view
Đăng ký:
Đăng Nhận xét (Atom)
Không có nhận xét nào:
Đăng nhận xét