Bài giảng Cơ sở dữ liệu - Chương 2: Giao tác - Điều khiển đồng thời
1. Dẫn nhập
2. Giao tác
3. Giao tác truy xuất đồng thời
4. Lịch thao tác
5. Điều khiển đồng thời dùng kỹ thuật khóa
6. Mức cô lập của giao tác
7. Deadlock
8. Cách sử dụng các phương thức khóa
9. Điều khiển đồng thời dùng kỹ thuật nhãn thời
gian
10. Điều khiển đồng thời dùng phương pháp kiểm tra
hợp le
ị cuối của X lẽ ra là giá trị do T ghi nhưng đã bị bỏ qua. ¾ Khi U abort, đặt C(X) = false, chép lại giá trị cũ của X và WT(X) U bắt đầu T bắt đầu U writes X T writes X T commit U abort 125 Nguyên tắc Khi T yêu cầu Read/Write, bộ lập lịch phản hồi: ¾Đáp ứng yêu cầu. ¾Abort T và khởi tạo T với nhãn thời gian mới (Rollback). ¾ Trì hoãn T và sau đó quyết định Abort T hay đáp ứng yêu cầu 126 Thuật toán điều khiển 1. T yêu cầu Read X ¾ Nếu TS(T) >= WT(X) 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) z Nếu C(X) = FALSE, trì hoãn T cho đến khi C(X) trở thành TRUE hay giao dịch đã ghi X abort. ¾ Nếu TS(T) < WT(X) z Rollback T (Đọc quá trễ) 127 Thuật toán điều khiển 2. Giao dịch T yêu cầu Write X ¾ Nếu TS(T) >= RT(X) and TS(T) >= WT(X) z Ghi giá trị mới trên X z Đặt WT(X) := TS(T). z Đặt C(X) := FALSE. ¾ Nếu TS(T) >= RT(X) and TS(T) < WT(X) z Nếu C(X) = TRUE, bỏ qua việc ghi của T. z Nếu C(X) = FALSE, trì hoãn T cho đến khi C(X) = TRUE hoặc các giao tác ghi trên X đã abort. ¾ Nếu TS(T) < RT(X) z Rollback T (Ghi quá trễ) 3. Nếu T commit, bộ lập lịch đặt tất cả các đvdl X mà T ghi giá trị C(X):=TRUE. Các GT đang chờ trên X có thể tiếp tục. 4. Trường hợp T rollback, các GT khác đang chờ trên X yêu cầu đọc/ ghi lại. 128 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 tw=415 WriteA tw=420 ReadB T2 rollback ReadB tr=425 ReadA WriteC WriteA tw=425 129 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 tw=500 WriteA tw=510 ReadB tr=550 ReadB tr=575 ReadA tr=550 WriteC Tw=550 WriteA tw=575 130 PP nhãn thời gian đa phiên bản Là một biến thể của pp nhãn thời gian. Ngoài phiên bản mới nhất của đvdl được lưu lại, còn có các phiên bản trước đó. Mục đích: giúp cho thao tác đọc không bao giờ làm giao tác rollback. ¾Hỏi: Khi nào thì thao tác đọc làm giao tác rollback? ¾ PP nhãn thời gian đa phiên bản sẽ làm giao tác T thay vì abort vì lý do trên sẽ tiếp tục đọc phiên bản (của đvdl cần đọc) phù hợp với nhãn thời gian của T. 131 PP nhãn thời gian đa phiên bản Mỗi đvdl X có nhiều phiên bản X1, X2, ..., Xk. Đối với mỗi phiên bản, lưu lại: ¾Giá trị của phiên bản Xi, ¾Nhãn thời gian đọc của Xi :rT (Xi), là nhãn thời gian lớn nhất trong các GT đã đọc Xi. ¾Nhãn thời gian ghi của Xi wT(Xi), là nhãn thời gian của giao tác đã tạo ra phiên bản Xi. Khi T được phép ghi trên X, một phiên bản mới Xk+1 được tạo, và: ¾ rT (Xk+1) = wT(Xk+1) = TS(T). Khi T được phép đọc trên Xi, thì: ¾ rT (Xi) = max(rT (Xi), TS(T)) 132 PP nhãn thời gian đa phiên bản Để bảo đảm khả tuần tự, có 2 nguyên tắc sau phải được đảm bảo: 1. T yêu cầu ghi trên X: ¾ Trong các phiên bản của X có nhãn thời gian ghi <= TS(T), chọn phiên bản Xi có wT(Xi) lớn nhất: z Nếu rT (Xi) > TS(T) thì cho T rollback. z Nếu rT (Xi) <= TS(T), thì: – Nếu TS(T) = wT(Xi) thì giá trị của Xi bị ghi đè. – Nếu TS(T) > wT(Xi) thì tạo phiên bản mới Xj, rT (Xj) = wT(Xj) =TS(T) 2. T yêu cầu đọc trên X: ¾ Trong các phiên bản của X có nhãn thời gian ghi <= TS(T), chọn phiên bản Xi có wT(Xi) lớn nhất: z Trả về giá trị Xi cho giao tác T. z rT (Xi) = max (rT (Xi), TS(T)) 133 PP nhãn thời gian đa phiên bản Nếu T rollback thì tình trạng rollback dây chuyền có thể xảy ra. Để lịch biểu là phục hồi được, khi các GT ghi trên các đvdl mà T đã đọc commit thì T mới được phép commit. 134 10. Điều khiển đồng thời dùng phương pháp kiểm tra hợp lệ (Validation Technique) 135 Phương pháp kiểm tra hợp lệ KT khóa và KT nhãn thời gian là các PP điều khiển đồng thời bi quan: giả sử các GT sẽ đụng độ và tránh sự đụng độ này. KT khoá vá KT nhãn thời gian điều khiển thực hiện đồng thời theo cú pháp, vì phân biệt đọc/ghi. PP kiểm tra hợp lệ là PP điều khiển đồng thời lạc quan. 136 Phương pháp kiểm tra hợp lệ Cứ cho GT thực hiện. ¾Cập nhật của GT chỉ trên biến cục bộ, không cập nhật trực tiếp trên CSDL cho đến khi GT kết thúc. ¾Khi GT thi hành xong, kỳ xác nhận kiểm tra các cập nhật của GT có vi phạm tính khả tuần tự không. z Nếu không, GT commit và CSDL được cập nhật thật sự từ biến cục bộ. z Nếu vi phạm, GT abort và khởi động lại. 137 Phương pháp kiểm tra hợp lệ GT trải qua các kỳ: ¾ 1. Kỳ đọc (Read phase): z Ti đọc các mục dl cần thiết. z Các cập nhật chỉ thực hiện trên biến cục bộ, không phải trên CSDL. ¾ 2. Kỳ Kiểm tra hợp lệ (Validation phase): z Kiểm tra có vi phạm tính khả tuần tự hay không để cập nhật CSDL. – Nếu vi phạm thì rollback. – Nếu không thì làm tiếp kỳ 3. ¾ 3. Kỳ ghi (Write phase): z Ghi từ biến cục bộ xuống CSDL. 138 Phương pháp kiểm tra hợp lệ Ghi nhận các nhãn thời gian: ¾ START(Ti) – thời điểm Ti start ¾VAL(Ti) – thời điểm Ti thực hiện xong phase validate ¾ Finish(Ti) – thời điểm T thực hiện xong phase finish. 139 Phương pháp kiểm tra hợp lệ Bộ lập lịch theo dõi 3 tập hợp: ¾ START = {T, T đã start, nhưng chưa validate xong} + START (T) ¾VAL = {T, T validate xong nhưng chưa xong phase finish} + START (T) + VAL(T) z VAL(T) là thời điểm để căn cứ vào đó điều khiển tuần tự. ¾ FIN = {T, T thực hiện xong phase finish} + START(T), VAL(T), FIN(T) z Bộ lập lịch không quan tâm đến GT T sao cho FIN(T) < START(U), U là giao tác đang ở trạng thái kích hoạt. ValidateStart Finish 140 Kiểm tra hợp lệ Giả sử có GT U: ¾ U ∈ VAL hoặc U ∈ FIN ¾ FIN(U) > START (T), nghĩa là U không finish trước khi T start. ¾ RS(T) ∩ WS(U) = {X} ≠ ∅: có thể U write X sau khi T read X. Ta không chắc T đã đọc giá trị U ghi trước đó hay không, tốt hơn hết cho T rollback để tránh rủi ro T và U không tuân theo thứ tự tuần tự. Start Validate FinishU T 141 Kiểm tra hợp lệ Giả sử có GT U: ¾ U ∈ VAL, nghĩa là đã validate xong ¾ FIN(U) > VAL (T), nghĩa là U không finish trước khi T bắt đầu giai đoạn validate. ¾ WS(T) ∩ WS(U) = {X} ≠ ∅: có thể T sẽ ghi X trước khi U ghi X. Ta không chắc điều này có xảy ra hay không, tốt hơn hết là rollback T để không vi phạm tính tuần tự. Start Validate Finish U T 142 Ví dụ T: RS(T)={A,B} WS(T)={A,C} V: RS(V)={B} WS(V)={D,E} U: RS(U)={B} WS(U)={D} W: RS(W)={A,D} WS(W)={A,C} Hãy điều khiển đồng thời dùng phương pháp kiểm tra hợp lệ cho 4 GT trên. 143 Phương pháp kiểm tra hợp lệ Nói chung, TS(Ti) = Validation (Ti). Kiểm tra hợp lệ cho Tj: ¾Với mọi Ti thỏa TS(Ti) < TS(Tj) thì một trong hai điều kiện sau phải thỏa: z Finish(Ti) < Start(Tj): nếu Ti xong trước khi Tj bắt đầu. z Start(Tj) < Finish(Ti) < Validation(Tj): Việc ghi của Ti và Tj không ghi đè. Thao tác ghi của Tj không ảnh hưởng thao tác đọc của Tj. Lịch biểu dùng kỹ thuật này là không rollback dây chuyền vì thao tác ghi được thực hiện sau khi giao tác commit. 144 Nhận xét chung Lưu trữ: z 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 và ghi của từng đvdl, bất kể có đang được truy cập hay không. z Validation: cần lưu lại nhãn thời gian và read set, write set cho từng giao tác đang được kích hoạt. ¾ Nói chung, không gian lưu trữ gần như tỉ lệ với số lượng đvdl được truy cập bởi các giao tác đang ở trạng thái kích hoạt. Về khả năng giao tác hoàn tất mà không bị trì hoãn: ¾ Hiệu quả của các phương pháp còn tùy thuộc vào sự ảnh hưởng lẫn nhau của các giao tác (truy cập cùng đvdl) là nhiều hay ít. z PP lock: trì hoãn GT nhưng tránh được tình trạng rollback, ngay cả khi sự ảnh hưởng lẫn nhau giữa các GT đồng thời là nhiều. PP nhãn thời gian và pp Kiểm tra hợp lệ không trì hoãn GT nhưng có thể gây ra tình trạng GT rollback Ỉ lãng phí tài nguyên. z Nếu sự ảnh hưởng lẫn nhau giữa các GT đồng thời là nhỏ thì cả PP nhãn thời gian lẫn Kiểm tra hợp lệ đều không gây ra rollback. Khi đó cả hai làm việc tốt hơn và tốn ít chi phí hơn PP lock. z Khi rollback xảy ra, pp Nhãn thời gian bắt vấn đề sớm hơn pp Kiểm tra hợp lệ. 145 Phụ lục 146 TT NHÃN THỜI GIAN 1. 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 quá trễ) 2. Giao dịch T yêu cầu Write X Nế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 quá trễ) 147 Nhãn thời gian đa phiên bản 1. T yêu cầu ghi trên X: ¾ Trong các phiên bản của X có nhãn thời gian ghi <= TS(T), chọn phiên bản Xi có wT(Xi) lớn nhất: z Nếu rT (Xi) > TS(T) thì cho T rollback. z Nếu rT (Xi) <= TS(T), thì: – Nếu TS(T) = wT(Xi) thì giá trị của Xi bị ghi đè. – Nếu TS(T) > wT(Xi) thì tạo phiên bản mới Xj, rT (Xj) = wT(Xj) =TS(T) 2. T yêu cầu đọc trên X: ¾ Trong các phiên bản của X có nhãn thời gian ghi <= TS(T), chọn phiên bản Xi có wT(Xi) lớn nhất: z Trả về giá trị Xi cho giao tác T. z rT (Xi) = max (rT (Xi), TS(T)) 148 Hết chương 2.
File đính kèm:
- Chuong_2_Giao_tac_va_Truy_xuat_dong_thoi.pdf