Xem mẫu
Khái niệm giao tác (transaction).
Các vấn ñề xảy ra khi nhiều người cùng khai thác Cơ Sở Dữ Liệu.
Các giải pháp cho các vấn ñề trên. Sử dụng giao tác trong SQL Server.
DBMS02 – Slides 2
Giao tác là một dãy các thao tác cần thực hiện trên cơ sở dữ liệu dưới một ñơn vị duy nhất, nghĩa là hoặc thực hiện tất cả các thao tác hoặc không thực hiện thao tác nào cả.
Giao tác
Ví dụ
Hệ thống giao dịch ngân hàng Hệ thống ñặt vé bay
DBMS là môi trường ña người dùng
Nhiều thao tác truy xuất lên cùng một ñơn vị dữ liệu
Nhiều thao tác thi hành ñồng thời
Khách hàng 1
Tìm thấy 1 chỗ trống
Thời gian ðặt vé bay
Cơ chế tuần tự
Khách hàng 2
Tìm thấy 1 chỗ trống
ðặt vé bay
2 khách hàng ñặt cùng 1 chỗ trống ???
DBMS02 – Slides 3 DBMS02 – Slides 4
Giao tác
Ví dụ: giao tác chuyển khoản từ A B gồm 2 thao tác sau:
Trừ tiền A
Khi DBMS gặp sự cố
Các thao tác có thể làm cho trạng thái CSDL không chính xác
Cộng tiền B Tài khoản A Tài khoản B
Chuyển khoản ñược thực hiện dưới dạng giao tác (transaction) nghĩa là hoặc thực hiện cả 2 việc trừ tiền A và cộng tiền B hoặc nếu có sự cố thì không làm gì cả và thông báo giao tác thất bại.
ðọc số dư của tài khoảnA
Kiểm tra (số dư > số tiền cần rút)
Tăng số dư của tài khoản B Sự cố
Giảm số dư của tài khoảnA
Ngân hàng chịu lỗ 1 khoảng tiền ???
DBMS02 – Slides 5
Vấn ñề mất dữ liệu ñã cập nhật Vấn ñề không thể ñọc lại
Vấn ñề dữ liệu không nhất quán
DBMS02 – Slides 7
DBMS02 – Slides 6
Vấn ñề mất dữ liệu ñã cập nhật
Ví dụ: Nhà sách còn 500 quyển sách.
Vào lúc T nhân viên A nhân yêu cầu mua 400 quyển từ khách hàng X.
Cũng vào T nhân viên B nhân yêu cầu mua 300 quyển từ khách hàng Y.
A và B ñọc dữ liệu thấy còn 500 quyển nên ñều ñồng ý bán
DBMS02 – Slides 8
Vấn ñề mất dữ liệu ñã cập nhật (tt) Ví dụ: Nhà sách còn 500 quyển sách.
Vào lúc T nhân viên A sẽ thực hiện cập nhật số sách từ 500 thành 100.
Vào lúc T nhân viên B sẽ thực hiện cập nhật số sách từ 500 thành 200.
Như vậy thao tác cập nhật của A không có tác dụng hay dữ liệu mà A cập nhật sẽ bị mất vì B cập nhật sau??? (last in wind)
DBMS02 – Slides 9
Vấn ñề không thể ñọc lại (tt)
Ví dụ: Giả sử nhà sách còn 200 quyển sách.
Nếu vào lúc T vì lý do nào ñó chẳng hạn không ñủ tiền khách hàng của A không mua 150 quyển sách nửa. Giao tác bán hàng của A sẽ không thể thực hiện nên quay về trạng thái số sách còn là 200.
Nhưng B ñã từ chối khách hàng.
Nếu B không ñọc ñược dữ liệu từ lúc T ñến T thì sẽ như thế nào?
DBMS02 – Slides 11
Vấn ñề không thể ñọc lại
Ví dụ: Giả sử nhà sách còn 200 quyển sách.
Vào lúc T nhân viên A bán cho khách 150 quyển, sẽ thực hiện cập nhật số sách từ 200 thành 50. (giao dịch chưa hoàn thành chẳng hạn vì việc giao nhận tiền chưa xong)
Sau ñó lúc T , B nhận ñươc yêu cầu mua 100 quyển sách, nếu B ñược ñọc dữ liệu chưa hoàn tất thì B sẽ từ chối bán 100 quyển sách này.
DBMS02 – Slides 10
Vấn ñề dữ liệu không nhất quán
Ví dụ: Giả sử nhân viên C cần tổng hợp 5 dòng dữ liệu 1 2 3 4 5 ñể làm một bản báo cáo.
T1:C ñọc và ñưa các dòng 1 2 3 4 vào báo cáo T2:D lại xóa dòng 1 thay bằng dòng 6.
T3:C ñọc tiếp các dòng 5 6 ñưa vào báo cáo
Vậy báo cáo này xử lý cả dữ liệu cũ và mới SAI
DBMS02 – Slides 12
Tính chất ACID của giao tác Ví dụ
Nguyên tố (Atomicity)
Hoặc là toàn bộ hoạt ñộng của giao dịch ñược phản ánh ñúng ñắn trong CSDL hoặc không có hoạt ñộng nào cả
Nhất quán (Consistency)
Một giao tác ñược thực hiện ñộc lập với các giao tác khác xử lý ñồng thời với nó ñể bảo ñảm tính nhất quán cho CSDL
Cô lập (Isolation)
Một giao tác không quan tâm ñến các giao tác khác xử lý ñồng thời với nó
Bền vững (Durability)
Mọi thay ñổi mà giao tác thực hiện trên CSDL phải ñược ghi nhận bền vững
T:Read(A,t); t:=t-50; Write(A,t); Read(B,t); t:=t+50; Write(B,t);
Consistency
Tổng A+B là không ñổi
Nếu CSDL nhất quán trước khi T ñược thực hiện thì sau khi T hoàn tất CSDL vẫn còn nhất quán
DBMS02 – Slides 13 DBMS02 – Slides 14
Ví dụ (tt) Ví dụ (tt)
T:Read(A,t); t:=t-50; Write(A,t); Read(B,t); t:=t+50; Write(B,t);
Atomicity
A=100, B=200 (A+B=300)
Tại thời ñiểm sau khi write(A,t)
A=50, B=200 (A+B=250) - CSDL không nhất quán Tại thời ñiểm sau khi write(B,t)
A=50, B=250 (A+B=300) - CSDL nhất quán
Nếu T không bao giờ bắt ñầu thực hiện hoặc T ñược ñảm bảo phải hoàn tất thì trạng thái không nhất quán sẽ không xuất hiện
T:Read(A,t); t:=t-50; Write(A,t); Read(B,t); t:=t+50;
Write(B,t); Durability
Khi T kết thúc thành công
Dữ liệu sẽ không thể nào bị mất bất chấp có sự cố hệ thống xãy ra
DBMS02 – Slides 15 DBMS02 – Slides 16
Ví dụ (tt) Trạng thái của giao tác
T’
Isolation
T:Read(A,t); t:=t-50; Write(A,t); Read(B,t); t:=t+50; Write(B,t);
Active
Ngay khi bắt ñầu thực hiện thao tác ñọc/ghi Partially committed
Sau khi lệnh thi hành cuối cùng thực hiện
Failed
Giả sử có 1 giao tác T’ thực hiện phép toán A+B và chen vào giữa thời gian thực hiện của T
T’ kết thúc: A+B=50+200=250 T kết thúc: A+B=50+250=300
Hệ thống của các giao tác thực hiện ñồng thời có trạng thái tương ñương với trạng thái hệ thống của các giao tác thực hiện tuần tự theo 1 thứ tự nào ñó
DBMS02 – Slides 17
Sau khi nhận ra không thể thực hiện các hành ñộng ñược nữa
Aborted
Sau khi giao tác ñược quay lui và CSDL ñược phục hồi về trạng thái trước trạng thái bắt ñầu giao dịch
Bắt ñầu lại giao tác (nếu có thể) Hủy giao tác
Committed
Sau khi mọi hành ñộng hoàn tất thành công
Sơ ñồ trạng thái của giao tác Phân loại Transaction
Giao dịch tường minh (Explicit transaction)
Giao dịch ngầm ñịnh (Implicit transaction)
Giao dịch xác nhận (Commit transaction)
DBMS02 – Slides 19 DBMS02 – Slides 20
...
- tailieumienphi.vn
nguon tai.lieu . vn