Bài giảng Hệ quản trị cơ sở dữ liệu - Chương 2: Quản lý thao tác và truy xuất đồng thời cung cấp các kiến thức giúp sinh viên có thể biết cách xử lý công việc trên cơ sở dữ liệu theo thao tác; hiểu và vận dụng các kỹ thuật điều khiển đồng thời. Mời các bạn cùng tham khảo nội dung chi tiết.
Chương Giao tác – điều khiển đồng thời GV: Phạm Thị Bạch Huệ Email: ptbhue@fit.hcmus.edu.vn Nhắc lại nội dung môn học Chương Chương Chương liệu Chương xuất Chương I: Tổng quan HQT CSDL II: Quản lý giao tác truy xuất đồng thời III: Phục hồi liệu sau cố – An toàn IV: Lưu trữ liệu phương thức truy V: Xử lý tối ưu hóa câu truy vấn Mục tiêu Biết xử lý công việc CSDL theo giao tác Hiểu và/ vận dụng kỹ thuật điều khiển đồng thời Noäi dung 10 Dẫn nhập Giao tác Giao tác truy xuất đồng thời Lịch thao tác Điều khiển đồng thời dùng kỹ thuật khóa Mức cô lập giao tác Deadlock Cách sử dụng phương thức khóa Điều khiển đồng thời dùng kỹ thuật nhãn thời gian Điều khiển đồng thời dùng phương pháp kiểm tra hợp lệ DẪN NHẬP z z Vì phải thực giao tác? Vì phải điều khiển đồng thời? Dẫn nhập Ý tưởng giao tác để mô tả đơn vị xử lý trình xử lý liệu CSDL Nhiều người thao tác CSDL gây tình trạng CSDL sai Ỉ điều khiển đồng thời GIAO TÁC z z z Định nghóa Tính chất Viết giao tác ĐỊNH NGHĨA GIAO TÁC Giao tác tập hợp thao tác có thứ tự truy xuất liệu CSDL thành đơn vị công việc logic (xem thao tác nguyên tố), chuyển CSDL từ trạng thái quán sang trạng thái quán khác GIAO TÁC Cho quan hệ ¾ LOP (MALOP, TENLOP, SISO) ¾ SV (MASV, TENSV, MALOP) RBTV: SISO lớp phải số sinh viên thuộc lớp Hãy viết giao tác thêm SV vào lớp Giao tác Them_SV (v_masv, v_tensv, v_malop) Bắt đầu GT Nếu v_malop không tồn Rollback tran Insert into SV (v_masv,v_tensv,v_malop) Update LOP Set SoSV= SoSV + Where Malop = v_malop Cuối giao tác Them_SV Tính chất giao tác: ACID Atomic – Tính nguyên tố Không thể chia nhỏ Consistency – Tính quán Isolation – Tính cô lập Durability – Tính lâu dài, bền vững Chuyển CSDL từ trạng thái quán sang trạng thái quán khác Các giao tác xử lý đồng thời phải độc lập với thay đổi giao tác khác Khi giao tác hòan tất, tất thay đổi phải ghi nhận chắn lên CSDL 10 T-SQL đặc trưng giao tác BEGIN TRANSACTION Bắt đầu giao tác COMMIT TRANSACTION Kết thúc giao tác thành công ROLLBACK TRANSACTION Kết thúc giao tác không thành công, CSDL trả tình trạng trước thực giao tác 11 Một số lưu ý Kiểm tra lỗi quyền, vi phạm ràng buộc, deadlock Biến tòan cục @@ERROR =0 : không lỗi, ≠ : có lỗi GT Không tự rollback gặp lỗi trình thực Cần kiểm tra giá trị biến @@ERROR sau câu lệnh thành phần xử lý lỗi có Biến @@ROWCOUNT Lồng 32 tầng, lệnh rollback tầng làm rollback tòan giao tác 12 GIAO TÁC TRUY XUẤT ĐỒNG THỜI z z Giới thiệu Các vấn đề xử lý đồng thời 13 Lý điều khiển đồng thời Đảm bảo nhiều giao tác thực đồng thời mà đảm bảo tính đắn CSDL Transaction manager Bộ lập lịch nhận yêu cầu Read/Write từ giao tác điều khiển: cho thực thi chờ hủy giao tác tùy vào kỹ thuật điều khiển đồng thời cài đặt Yêu cầu Read/Write Scheduler Reads & Writes Buffers 14 Các vấn đề xử lý đồng thời Mất liệu cập nhật (Lost update) TH1: T1 T2 Begin Tran Read A Begin Tran Read A A:=A+10 Write A A:=A*100 Write A Commit Tran Commit Tran 15 Caùc vấn đề xử lý đồng thời Mất liệu cập nhật (Lost update) TH2: T1 T2 Begin Tran Begin Tran Write A Write A Commit Tran Commit Tran 16 Các vấn đề xử lý đồng thời Đọc liệu chưa commit (Uncommit data, Dirty read) T1 Begin Tran Read A A:=A+10 Write A T2 Begin Tran Read A Print A Commit Tran Rollback Tran 17 Caùc vấn đề xử lý đồng thời Thao tác đọc lặp lại (Unrepeatable data) T1 Begin Tran Read A T2 Begin Tran Read A A:=A+10 Write A Commit Tran Read A Commit Tran 18 Các vấn đề xử lý đồng thời Phantom T1 Begin Tran Select * From SV T2 Begin Tran Insert into SV values ( ) Commit Tran Select * From SV Commit Tran 19 LỊCH THAO TÁC Các khái niệm: z z z z z z z z Lịch biểu Lịch biểu Lịch biểu khả Lịch biểu phục hồi Lịch biểu không rollback dây chuyền Bộ lập lịch Nghi thức 20 Nguyên tắc Khi T yêu cầu Read/Write, lập lịch phản hồi: ¾ Đáp ứng yêu cầu ¾ Abort T khởi tạo T với nhãn thời gian (Rollback) ¾ Trì hoãn T sau định Abort T hay đáp ứng yêu cầu 133 Thuật toán điều khiển T yêu cầu Read X ¾ Nếu TS(T) >= WT(X) z z Nếu C(X) = TRUE, đáp ứng yêu cầu – Nếu TS(T) > RT(X) • RT(X) := TS(T) – Ngược lại không thay đổi RT(X) Nếu C(X) = FALSE, trì hoãn T C(X) trở thành TRUE hay giao dịch ghi X abort ¾ Nếu TS(T) < WT(X) z Rollback T (Đọc trễ) 134 Thuật toán điều khiển Giao dịch T yêu cầu Write X ¾ Neáu TS(T) >= RT(X) and TS(T) >= WT(X) z z z ¾ Nếu TS(T) >= RT(X) and TS(T) < WT(X) z z ¾ Nếu C(X) = TRUE, bỏ qua việc ghi T Nếu C(X) = FALSE, trì hoãn T C(X) = TRUE giao tác ghi X abort Nếu TS(T) < RT(X) z Ghi giá trị X Đặt WT(X) := TS(T) Đặt C(X) := FALSE Rollback T (Ghi trễ) Nếu T commit, lập lịch đặt tất đvdl X mà T ghi giá trị C(X):=TRUE Các GT chờ X tiếp tục Trường hợp T rollback, GT khác chờ X yêu cầu đọc/ ghi lại 135 Ví dụ T1 T2 T3 T4 A B C 420 400 425 415 tr=tw=0 tr=tw=0 tr=tw=0 ReadA tr=415 ReadA tr =420 WriteB WriteA tw=415 tw=420 ReadB T2 rollback ReadB tr=425 ReadA WriteC WriteA tw=425 136 Ví dụ T1 T2 T3 T4 A B C 510 550 575 500 tr=tw=0 tr=tw=0 tr=tw=0 ReadA tr=500 ReadA tr =510 WriteB WriteA tw=500 tw=510 ReadB tr=550 ReadB tr=575 ReadA tr=550 WriteC Tw=550 WriteA tw=575 137 PP nhaõn thời gian đa phiên Là biến thể pp nhãn thời gian Ngoài phiên đvdl lưu lại, có phiên trước Mục đích: giúp cho thao tác đọc không làm giao tác rollback ¾ Hỏi: Khi thao tác đọc làm giao tác rollback? ¾ PP nhãn thời gian đa phiên làm giao tác T thay abort lý tiếp tục đọc phiên (của đvdl cần đọc) phù hợp với nhãn thời gian T 138 PP nhãn thời gian đa phiên Mỗi đvdl X có nhiều phiên X1, X2, , Xk Đối với phiên bản, lưu lại: ¾ Giá trị phiên Xi, ¾ Nhãn thời gian đọc Xi :rT (Xi), nhãn thời gian lớn GT đọc Xi ¾ Nhãn thời gian ghi Xi wT(Xi), nhãn thời gian giao tác tạo phiên Xi Khi T phép ghi X, phiên Xk+1 tạo, và: ¾ rT (Xk+1) = wT(Xk+1) = TS(T) Khi T phép đọc Xi, thì: ¾ rT (Xi) = max(rT (Xi), TS(T)) 139 PP nhãn thời gian đa phiên Để bảo đảm khả tuần tự, có nguyên tắc sau phải đảm bảo: T yêu cầu ghi X: ¾ Trong phiên X có nhãn thời gian ghi TS(T) cho T rollback Nếu rT (Xi) wT(Xi) tạo phiên Xj, rT (Xj) = wT(Xj) =TS(T) T yêu cầu đọc X: ¾ Trong phiên X có nhãn thời gian ghi START (T), nghóa U không finish trước T start ¾ RS(T) ∩ WS(U) = {X} ≠ ∅: U write X sau T read X Ta không T đọc giá trị U ghi trước hay không, tốt hết cho T rollback để tránh rủi ro T U không tuân theo thứ tự Start Validate U Finish T 149 Kiểm tra hợp lệ Giả sử có GT U: ¾ U ∈ VAL, nghóa validate xong ¾ FIN(U) > VAL (T), nghóa U không finish trước T bắt đầu giai đoạn validate ¾ WS(T) ∩ WS(U) = {X} ≠ ∅: T ghi X trước U ghi X Ta không điều có xảy hay không, tốt hết rollback T để không vi phạm tính Start Validate U Finish T 150 Ví dụ U: RS(U)={B} WS(U)={D} W: RS(W)={A,D} WS(W)={A,C} V: RS(V)={B} WS(V)={D,E} T: RS(T)={A,B} WS(T)={A,C} Haõy điều khiển đồng thời dùng phương pháp kiểm tra hợp lệ cho GT 151 Ví dụ (tt) U có hợp lệ? ¾ Vì thời điểm U kiểm tra hợp lệ chưa có giao tác hợp lệ nên không cần kiểm tra U kiểm tra hợp lệ thành công 152 Ví dụ(tt) T có hợp lệ? ¾ Khi T kiểm tra hợp lệ, U hợp lệ chưa kết thúc Vì ta kiểm tra tập đơn vị liệu đọc ghi T có giao với tập đvdl ghi U hay không Thật vậy: RS(T) ∩ WS(U) = {A, B} ∩ {D} = ∅ WS(T) ∩ WS(U) = {A, C} ∩ {D} = ∅ Vậy T hợp lệ z z 153 Ví dụ (tt) V có hợp lệ? ¾ Khi V kiểm tra hợp lệ, U hợp lệ kết thúc, T hợp lệ chưa kết thúc Vì V bắt đầu trước U kết thúc nên ta phải kiểm tra: RS(V) ∩ WS(U) = {B} ∩ {D} = ∅ RS(V) ∩ WS(T) = {B} ∩ {A, C} = ∅ z WS(V) ∩ WS(T) = {D, E} ∩ {A, C} = ∅ Vậy V hợp lệ z z 154 Ví dụ (tt) W có hợp lệ? ¾ Khi W kiểm tra hợp lệ U, T, V kiểm tra hợp lệ, W bắt đầu sau U kết thúc Khi T V chưa kết thúc Ta phải kiểm tra: z z z RS(W) ∩ WS(T) = {A, D} ∩ {A, C} = {A} RS(W) ∩ WS(V) = {A, D} ∩ {D, E} = {D] WS(W) ∩ WS (V) = {A, C} ∩ {D, E} = ∅ W không hợp lệ 155 Nhận xét chung Lưu trữ: PP lock: lock table, không gian lưu trữ tỉ lệ với số lượng đvdl bị lock z PP nhãn thời gian: cần không gian lưu trữ cho nhãn thời gian đọc ghi đvdl, có truy cập hay không z Validation: cần lưu lại nhãn thời gian read set, write set cho giao tác kích hoạt PP cần không gian nhiều theo dõi giao tác commit chưa thực ghi ¾ Nói chung, không gian lưu trữ gần tỉ lệ với số lượng đvdl truy cập giao tác trạng thái kích hoạt z 156 Nhận xét chung Về khả giao tác hoàn tất mà không bị trì hoãn: ¾ Hiệu phương pháp tùy thuộc vào ảnh hưởng lẫn giao tác (truy cập đvdl) nhiều hay z PP lock: trì hoãn GT tránh tình trạng rollback, ảnh hưởng lẫn GT đồng thời nhiều PP nhãn thời gian pp Kiểm tra hợp lệ không trì hoãn GT gây tình trạng GT rollback Ỉ lãng phí tài nguyên z Nếu ảnh hưởng lẫn GT đồng thời nhỏ PP nhãn thời gian lẫn Kiểm tra hợp lệ không gây rollback Khi hai làm việc tốt tốn chi phí PP lock z Khi rollback xảy ra, pp Nhãn thời gian nhận biết sớm rollback sớm pp Kiểm tra hợp lệ 157 Phụ lục Lịch biểu dùng kỹ thuật không rollback dây chuyền thao tác ghi thực sau giao tác khác commit 158 TT NHÃN THỜI GIAN T yêu cầu Read X Nếu TS(T) >= WT(X) T đọc X RT(X) := max (RT(X), TS(T)) Nếu TS(T) < WT(X) Rollback T (Đọc trễ) Giao dịch T yêu cầu Write X Neáu TS(T) >= RT(X) and TS(T) >= WT(X) T ghi X Đặt WT(X) := TS(T) Nếu TS(T) < RT(X) or TS(T) < WT(X) Rollback T (Ghi trễ) 159 Nhãn thời gian đa phiên T yêu cầu ghi X: ¾ Trong phiên X có nhãn thời gian ghi TS(T) cho T rollback Nếu rT (Xi) wT(Xi) tạo phiên Xj, rT (Xj) = wT(Xj) =TS(T) T yêu cầu đọc X: ¾ Trong phiên X có nhãn thời gian ghi