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