Tổng quanGiao dịch: Tập hợp các hoạt động tạo ra sự chuyển đổi từ một trạng thái nhất quán sang trạng thái nhất quán khác của CSDL và trong khi vận hành CSDL phải đảm bảo tính nhất quán
Trang 1CHƯƠNG IV: QUẢN LÝ
GIAO DỊCH VÀ ĐIỀU KHIỂN
TƯƠNG TRANH
Trang 2CHƯƠNG IV QUẢN LÝ GIAO DỊCH
VÀ ĐIỀU KHIỂN TƯƠNG TRANH
Trang 4Tổng quan
Giao dịch: Tập hợp các hoạt động tạo ra sự chuyển
đổi từ một trạng thái nhất quán sang trạng thái nhất quán khác của CSDL và trong khi vận hành CSDL phải đảm bảo tính nhất quán
Trang 5Các trạng thái của giao dịch
– Tích cực(Active): trạng thái ban đầu và trong khi vận hành
– Chuyển giao riêng phần(Paritally committed): Sau khi phát
biểu cuối cùng đã được vận hành
– Chuyển giao(Committed): Sau khi chuyển đổi thành công hoàn
toàn
– Thất bại(Failed): Sau khi phát hiện rằng việc vận hành thông
thường không thể xử lý hơn nữa
– Thoát(Aborted): Sau khi giao dịch đã quay lui và CSDL được
nạp trở lại trạng thái trước khi khởi động giao dịch Khởi
động lại hay hủy giao dịch
Trang 7begin transaction_Reservation
begin
input(fight_no,date,customer_name);
EXEC SQL SELECT STSOLD, CAP INTO temp1, temp2
FROM FLIGHT where FNO = fight_no and DATE = date;
if temp1 = temp2 then output(“no free seats");
Trang 8 Với 2 thao tác O ij ,O ik U OS i , nếu O ij = {R(x) v W(x)} và O ik =
W(x), thì với hạng mục dữ liệu x bất kỳ, có hoặc O ij < i O ik hoặc O ik
Trang 10Tính chất giao dịch (ACID )
• Nguyên tử: giao dịch là một đơn vị xử lý , nó hoặc thực
hiện toàn bộ hoặc không toàn bộ
• Nhất quán: 1 vận hành thành công của giao dịch phải
lấy được trạng thái nhất quán đến một trạng thái cơ sở dữ liệu mới nhất quán (Không vi phạm ràng buộc toàn vẹn)
• Cách ly: giao dịch không tạo sự biến đổi nhìn thấy trên
các giao dịch khác cho tới khi được chuyển giao, tức là giao dịch là không nhận thức với các vận hành giao dịch khác tương tranh trong hệ thống.
• Bền vững: Ngay khi 1 giao dịch đã chuyển giao thay đổi
của nó, các thay đổi này không bao giờ mất do sự cố hệ thống xảy ra sau
Trang 11- Phục hồi giao dịch là hoạt động của việc nạp lại
nguyên tử do lỗi đưa vào, quá tải hệ thống và khóa chết
- Phục hồi do hỏng đột ngột là hoạt động của việc đảm bảo tính nguyên tử trong khi hỏng đột ngột hệ thống
Trang 12Toàn vẹn
– Đơn giản là tính đúng đắn và toàn vẹn của giao dịch chuyển từ trạng
thái nhất quán này sang trạng thái nhất quán khác của dữ liệu
– Các giao dịch là chương trình thực hiện đúng và không vi phạm các
ràng buộc toàn vẹn của CSDL
– Dữ liệu nhiễu (dirty) là dữ liệu đã được cập nhật nhưng vẫn chưa được
chuyển giao.
– Các mức nhất quán khác nhau của CSDL
∗ Mức 0: Giao dịch T không đè lên các dữ liệu dirty của các giao dịch khác
∗ Mức 1: Mức 0 + T không chuyển giao bất kỳ thao tác viết nào trước khi
kết thúc giao dịch (EOT).
∗ Mức 2: Mức 1 + T không đọc dữ liệu dirty từ các giao dịch khác.
∗ Mức 3: Mức 2 + Các giao dịch khác không đọc bất cứ dữ liệu dirty nào
bởi T trước khi T hoàn tất.
Trang 13Cách ly
– Tính chất nhằm đảm bảo mỗi giao dịch nhìn một
CSDL luôn nhất quán.
– Nếu 2 giao dịch truy nhâp tương tranh một hạng
mục dữ liệu đang được cập nhật bởi một trong
chúng(VD, thao tác ghi) thì không thể đảm bảo giao dịch thứ hai sẽ đọc giá trị đúng
– Tính nhất quán của các giao dịch sẽ đạt được nếu các giao dịch vận hành một cách tuần tự.
– Vì vậy, nếu một vài giao dịch được vận hành tương
tranh, kết quả phải là như nhau nếu chúng được
vận hành nối tiếp nhau (-> nối tiếp hóa)
Trang 14Ví dụ: Xét 2 giao dịch với ban đầu x = 50.
Nếu thực hiện {T1 >T2} hay {T2 > T1} đều cho kết quả x=52
Trang 15– Vận hành tương tranh : T2
đọc các giá trị x trong khi nó đang thay đổi, kết quả là x = 51
và sai!
Trang 16Các tình huống xuất hiện nếu không đảm bảo tính cách ly(SQL-92):
- Đọc nhiễu: T1 thay đổi x rồi T2 đọc x trước
khi T1 kết thúc; nếu T1 thoát, T2 đọc giá trị không tồn tại trong csdl
- Đọc mờ(không lặp lại): T1 đọc x, T2 thay đổi
hay xóa x và chuyển giao; T1 cố đọc lại lần
nữa nhưng giá trị đã thay đổi hoặc không còn
- Ảo ảnh: T1 tìm kiếm csdl theo vị từ P trong
khi T2 đưa vào các bộ mới thỏa mãn P
Trang 17Các mức cách ly khác nhau:
- Đọc không chuyển giao: 3 hiện tượng đều có
khả năng xuất hiện
- Đọc có chuyển giao: đọc mờ và ảo ảnh xuất
hiện
- Đọc lặp lại: Chỉ có thể ảo ảnh
- Nối tiếp hóa tự động: Không xảy ra ảo ảnh
Trang 18Bền vững
– Ngay khi giao dịch chuyển giao hệ thống phải
đảm bảo rằng kết quả của các thao tác của
nó sẽ không bao giờ mất dù sau đó có thể sự
cố
– Phục hồi CSDL được dùng để đạt được nhiệm
vụ.
Trang 20Phân loại giao dịch
• Có nhiều tiêu chí phân loại
– Quãng thời gian giao dịch
∗ On-line (tồn tại thời gian ngắn)
∗ Batch (tồn tại thời gian dài)
– Tổ chức của lênh đọc và ghi trong giao dịch
Trang 21Phân loại giao dịch(…)
* Luồng làm việc(Workflows): Tập hợp các nhiệm vụ
được tổ chức để đạt được một quá trình vận hành đã cho Workflows phát sinh các giao dịch và thể hiện được rõ hơn các quá trình vận hành phức tạp.
* Phạm vi ứng dụng
phân tán/ không phân tán,
thuần nhất / không thuần nhất
Trang 22Phân loại giao dịch
Trang 23Định hướng cho xử lý giao dịch
• Cấu trúc giao dịch( mô hình giao dịch) : Phẳng (đơn giản), lồng
• Tính nhất quán của csdl nội tai : Các giải thuật điều khiển dữ liệu( đảm bảo tính nhất quán)
• Các giao thức tin cậy
– Nguyên tử và bền vững
– Các giao thức phục hồi cục bộ
– Các giao thức chuyển giao tổng thể
• Các giải thuật điều khiển tương tranh
– Đồng bộ việc vận hành các giao dịch tương tranh thế nào( tiêu chuẩn đúng đắn)
– Nhất quán trong giao dịch, cách ly
• Các giao thức điều khiển nhân bản : Điều khiển tính nhất quán tương hỗ các dữ liệu nhân bản thế nào
Trang 24• Quản trị giao dịch nhằm đạt được 4 tính chất giao dịch: ACID
• Giao dịch có thể được phân loại theo (i) thời gian (ii) Tổ chức ghi và đọc và(iii) Cấu trúc
• Xử lý giao dịch liên quan đến các độ tin cậy, tương tranh, các giao thức nhân bản đảm bảo 4 tính chất giao dịch
Trang 26Các cơ chế điều khiển tương tranh
a Mục tiêu
b Nối tiếp hóa phân tán
Trang 27a Mục tiêu
-Co giãn được khi sự cố site và truyền thông
- Thực hiện song song để thỏa mãn yêu cầu hiệu năng.
- Tổng phí tính toán và lưu trữ nhỏ
-Thực hiện được trên mạng có độ trễ lớn
- Đặt ít ràng buộc trên cấu truc hoạt động nguyên tử
Trang 28Điều khiển Tương tranh
Điều khiển tương tranh phân tán nhằm ngăn chặn việc sản sinh
ra các thực hiện không khả tuần tự của các giao tác phân tán
-> vấn đề đồng bộ các giao dịch tương tranh sao cho tính nhất
quán của cơ sở dữ liệu được bảo toàn trong khi cùng thời gian đạt được mức độ tương tranh cao nhất
Bất thường do mất điều khiển tương tranh
Mất cập nhật: Tác dụng của 1 vài giao dịch không được
phản ánh trên cơ sở dữ liệu
Phân tích không nhất quán: Giao dịch nếu đọc cùng hạng
mục dữ liệu nhiều hơn 1 lần, có thể đọc các gía trị khác nhau
Nhiều bản sao không nhất quán (khi nhân bản )
Trang 29Các giải pháp
• Nhãn thời gian (time stamp):
Sắp xếp các giao tác , áp đặt các thao tác truy nhập tới DL
theo thứ tự được xác định trước
Mỗi giao tác được dẫn trỏ bởi nhãn thời gian duy nhất
Mỗi trạm đánh nhãn thời gian một cách tự trị theo đồng hồ địa phương và số hiệu của trạm Ví dụ, một giao tác được khởi phát ở trạm i tại thời điểm t sẽ có nhãn thời gian <t,i>
• Sự đặt khoá (locking): Giao thức gồm hai giao tác nguyên
Trang 30Các giải pháp(tiếp )
• Sự hợp thức hoá giao tác
Phương pháp trực tiếp để hợp thức hoá một giao tác phân tán: tích hợp thực sự các cập nhật của giao tác và CSDL.
Giao thức hợp thức hoá hai giai đoạn:
Giai đoạn chuẩn bị: trạm điều phối yêu cầu mỗi trạm tham gia chuẩn bị cho sự hợp thức hoá
Giai đoạn hợp thức: trạm điều phối ra lệnh cho tất
cả các trạm tham gia hợp thức hoá các cập nhật của chúng nếu như tất cả chúng đều hoàn thành đúng giai đoạn thứ nhất hay nếu không thì huỷ bỏ chúng
Trang 31b Nối tiếp hóa phân tán
Lịch biểu nối tiếp
Các lịch biểu tương đương
Lịch biểu nối tiếp hóa
Kiểm tra tính nối tiếp
Trang 32Lịch biểu
• Lịch biểu đặc tả thứ tự sắp xếp vận hành các thao tác.
O là tập các giao dịch T = {T1, T2, , Tn}, với được đặc tả bởi thứ tự riêng phần (i, i) Một lịch biểu có ≺}, ở đây thể được đặc tả như một thứ tự riêng phần qua O
trong đó
– Với 2 thao tác đụng độ bất kỳ Oij, Okl T thì hoặc Oij
≺}, ở đây T Okl hay Okl ≺}, ở đây T Oij
Trang 33Lịch biểu nối tiếp
Trong một lịch biểu nối tiếp
• Mọi thao tác trong giao dịch xuất hiện liên tiếp nhau
• Không xen kẽ các thao tác
• Nếu mỗi giao dịch thu được trong trạng thái nhất
quán thì lịch biểu nối tiếp các giao dịch này cũng thu được nhất quán.
S1 = { R1(A);W1(A);R1(B);W1(B);C1;R2(A);R2(B);C2; }
Trang 34Lịch biểu nối tiếp(…)
• Lịch biểu là nối tiếp nếu mọi giao dịch trong T vận hành nối
tiếp Ví dụ: 2 giao dịch sau:
• Hai lịch biểu nối tiếp là S1 = {1, 1} và S≺1} và S 2 = {2, 2}≺1} và S
• Hai lịch biểu nối tiếp là S1 = {1, 1} và S2 = {≺}, ở đây 2, 2}≺}, ở đây
T1: Read(x)
x ← x + 1Write(x)Commit
T2: Read(x)
x ← x + 1Write(x)Commit
Trang 35Lịch biểu nối tiếp(…)
Chúng ta cũng đã sử dụng ký pháp sau:
– {T1, T2} = {R1(x),W1(x),C1,R2(x),W2(x),C2} – {T2, T1} = {R2(x),W2(x),C2,R1(x),W1(x),C1}
Trang 36Các lịch biểu tương đương
Hai lịch biểu là tương đương nếu chúng có cùng ảnh
hưởng trên csdl
Hai lịch biểu S và S’ là tương đương nếu và chỉ nếu:
• Chúng cùng chứa các giao dịch và các thao tác
(S.∑T=S’.∑T)
• Thứ bậc của mọi thao tác đụng độ của các giao dịch không thoát theo cùng cách thức
Trang 37Lịch biểu nối tiếp hóa
Một lịch biểu S được gọi là nối tiếp hóa nếu nó tương
đương với một lịch biểu nối tiếp nào đó.
VD: 3 lịch biểu sau được nối tiếp hóa và tương đương
S1 = {R1(A);W1(A);R1(B);W1(B);C1;R2(A);R2(B);C2; }
S2 = {R1(A);W1(A);R2(A);R2(B);C2;R1(B);W1(B);C1}
S3 = {R1(A);W1(A);R2(A);R1(B);W1(B);C1;R2(B);C2}
Trang 38Kiểm tra tính nối tiếp
Nếu đồ thị ưu tiên (dựa trên các thao tác đụng độ) cho lịch biểu S không có chu trình thì S là nối tiếp Lịch biểu nối tiếp có được qua sắp xếp topo
Kiểm tra việc thực hiện khả thi:
Bô lập lịch kiểm tra tính nối tiếp của lịch biểu Nó duy trì và mở rộng đô thị ưu tiên trong khi các thao tác mới được thực hiện (hay công bố) bởi các giao dịch :
+ Nếu đồ thị thực hiện là không chu trình, thì tiếp tục lập lịch.
+ Khác đi, thiết lập lại một vài giao dịch.
Tính nối tiếp trong CSDL phân tán :
+ Lịch biểu cục bộ và tổng thể phải được xem xét
+ Để lịch biểu tổng thể được nối tiếp hóa:
1.Mỗi lịch biểu cục bộ nên được nối tiếp hóa
2 Hai thao tác đụng độ nên theo cùng một thứ tự tương đối trên mọi lịch biểu cục bộ nơi chúng xuất hiện
Trang 39CHƯƠNG IV QUẢN LÝ GIAO DỊCH
VÀ ĐIỀU KHIỂN TƯƠNG TRANH
Trang 40Điều khiển tương tranh
• Điều khiển tương tranh là bài toán đồng bộ
các giao dịch tương tranh(thứ tự các phép toán giao dịch tương tranh) sao cho đạt được 2 tính chất :
- Duy trì tính nhất quán csdl
- Đạt được mức độ tương tranh các thao tác
• Dãy vận hành các giao dịch đạt được nhất quán nếu mỗi giao dịch nhất quán.
Trang 41• Đụng độ các thao tác: Hai thao tác Oij(x) và Okl(x) của giao dịch Ti và
Tk đụng độ khi và chỉ khi ít nhất có một thao tác ghi, tức là
T2: Read(x)
x ← x + 1Write(x)Commit
Trang 42Xử lý tương tranh dựa trên khóa
• Giao dịch chỉ ra bằng khóa các yêu cầu từ bộ lập lịch (quản trị khóa)
• Khóa hoặc là khóa đọc rl (còn gọi là khóa chia xẻ) hoặc
là khóa ghi wl (còn gọi là khóa dành riêng )
• Các khóa đọc và các khóa ghi có thể đụng độ
Trang 43Khóa 2 pha
Yêu cầu
1 Giao dịch khóa đối tượng trước khi sử dụng nó (read / write)
2 khi đối tượng bị khóa bởi các giao dịch khác, giao dịch muốn
sử dụng yêu cầu phải chờ
3 Khi giao dịch giải phóng 1 khóa, nó không yêu cầu bất kỳ
khóa nào trên đối tượng khác
Tính nghiêm ngặt của khóa : Mọi khóa được giải phóng cuối
mỗi giao dịch (sl shared lock)
(sl(x);sl(y);r(x); unlock(x);r(y); unlock(y)) hay
(sl(x);sl(y);r(x);r(y); unlock(x); unlock(y))
Việc triến khai thông qua bảng khóa (trong các hệ thống thương
mại là các header dữ liệu , id của giao dịch)
Trang 44Khóa 2 pha(tiếp)
1 Giao dịch khóa một đối tượng trước khi sử dụng nó (read / write)
2 Khi đối tượng bị giao dịch khác khóa, giao dịch này phải chờ
3 Khi giao dịch giải phóng 1 khóa, nó không yêu cầu bất kỳ khóa nào khác(trên đối tượng khác)
Trang 45Khoa 2 pha Tập trung
• Chỉ có 1 bộ lập lịch
2PL trong hệ thống
phân tán.
• Các yêu cầu Khóa
được công bố cho
bô lập lịch trung
tâm (từ bộ quản trị
giao dịch )
Trang 46Khóa 2 pha phân tán
• Bộ lập lịch được đặt ở mỗi
site, điều khiển các yêu cầu
khóa cho dữ liệu ở site đó.
• Giao dịch có thể đọc bất kỳ
nhân bản nào của đối tượng x,
bằng cách dành được một
khóa đọc trên bản sao của x
• Giao dịch viết x phải dành
được khóa ghi trên mọi bản
sao của x.
Trang 47CHƯƠNG IV QUẢN LÝ GIAO DỊCH
VÀ ĐIỀU KHIỂN TƯƠNG TRANH
Trang 48Thứ tự nhãn thời gian
“Lựa chọn” thứ tự nối tiếp và vận hành theo đó
Giả thiết tổng thể (phạm vi hệ thống) là tăng đơn điệu
1 Giao dịch Ti được gán một nhãn thời gian duy nhất tổng thể TS(Ti) định nghĩa mối quan hệ giữa các giao dịch già hơn và trẻ hơn
2 Bộ quản trị giao dịch gắn nhãn thời gian cho mọi thao tác công bố bởi các giao dịch
3 Mỗi đối tượng x có 2 nhãn thời gian:
RTS(X) := max{TS(T) | T đã đọc x}
WTS(X) := max {TS(T) | T đã ghi x}
Trang 49Phân giải đụng độ thao tác bằng thứ tự
Một thao tác có thể xử lý nếu mọi bước đụng độ của các gỉa thiết rằng giao dịch T muốn thao tác trên đối tượng x:
Case operation of:
read: if TS(T) < WTS(x) then reject (reschedule) read;
Trang 50Thứ tự thời gian
• Giao dịch (T i ) được gán nhãn thời gian duy nhất tổng thể ts(T i )
• Bộ quản trị giao dịch gắn nhãn thời gian cho mọi thao tác được công bố bới giao dịch
• Mỗi hạng mục dữ liệu được gán nhãn thời gian ghi (wts) và nhãn thời gian đọc (rts):
rts(x)=nhãn thời gian lớn nhất cho việc đọc bất kỳ trên x
wts(x)=nhãn thời gian lớn nhất cho việc ghi bất kỳ trên x
• Các thao tác đụng độ được giải quyết bởi thứ tự nhãn thời gian
TO cơ bản:
với R i (x) với W i (x)
if ts(T i )<wts(x) if ts(T i )<wts(x) and ts(T i )<rts(x)
then reject R i (x) then reject W i (x)
else accept R i (x) else accept W i (x)
rtsts(T i ) wtsts(T i )
Trang 51Thứ tự nhãn thời gian được giữ
• TO cơ bản cố gắng vận hành một thao tác ngay khi nhận được nó
– Diễn biến theo thời gian
– Quá nhiều khởi động lại do không giữ trễ
• Nhãn thời gian được giữ sẽ giữ trễ từng thao tác cho tới khi có một đảm bảo không khởi tạo lại
Trang 52Rj(x) sao cho
ts(Ti)<ts(xr)<ts(Tj)
Trang 54Các giải thuật điều khiển tương tranh tối ưu
• Mô hình vận hành giao dịch: chia thành các giao dịch con, mỗi một trong chúng vận hành tai 1 site
– Tij: Giao dịch Ti vận hành tại site j
• Giao dịch vận hành độc lập trên mỗi site cho tới khi chúng đến cuối pha đọc của chúng
• Mọi giao dịch con được gán một nhãn thời gian ở
cuối pha đọc của chúng
• Kiểm tra tính hợp lệ thực hiện trong pha kiểm tra
Nếu có một sự cố , tất cả bị từ chối
Trang 55Kiểm tra hợp lệ điều khiển
tương tranh lạc quan
• Nêu mọi giao dịch Tk ở đó ts(T k )<ts(T ij ) đã hoàn thành pha ghi
trước khi Tij bắt đầu pha đọc của nó thì kiểm tra hợp lệ thành công
– Giao dịch vận hành theo thứ tự nối tiếp
Đọc Kiểm tra Ghi
Tk
Đọc Kiểm tra Ghi
Tij
Trang 56Kiểm tra hợp lệ điều khiển
tương tranh lạc quan
• Nêu có 1 giao dịch bất kỳ Tk sao cho ts(T k )<ts(T ij ) đã hoàn
thành pha ghi trong khi Tij bắt đầu pha đọc của nó thì việc kiểm tra hợp lệ thành công nếu WS(Tk)RS(Tij)=
– Pha đọc và pha ghi chồng lấn nhưng pha đọc Tij không sử dụng hạng mục dữ liệu được ghi bởi Tk
Đọc Kiểm tra Ghi
Tk
Đọc Kiểm tra Ghi
Tij