Trong quá trình khôi phục cập nhật bị trì hoãn, các sửa đổi cơ sở dữ liệu thực tế trên đĩa sẽ bị hoãn lại cho đến khi giao dịch được thực hiện. Các bản cập nhật chỉ được ghi lại trong bộ đệm nhật ký và bộ đệm trong khi thực thi. Nếu một giao dịch không thành công trước khi cam kết, cơ sở dữ liệu trên đĩa vẫn không bị ảnh hưởng do đó KHÔNG HOÀN THÀNH. Chỉ REDO là cần thiết cho các giao dịch đã cam kết có những thay đổi chưa được ghi vào đĩa.
Giao thức cập nhật hoãn lại
- Một giao dịch không thể sửa đổi cơ sở dữ liệu trên đĩa cho đến khi đạt đến điểm cam kết.
- Tất cả các mục nhật ký REDO phải được ghi cưỡng bức vào đĩa trước khi cam kết (Ghi nhật ký ghi trước).
- Chỉ cần các mục nhật ký REDO (giá trị mới/AFIM) mà không cần các mục HOÀN TÁC.
Quy trình khôi phục (RDU_M)
Đối với các hệ thống nhiều người dùng có khóa hai pha nghiêm ngặt, thuật toán khôi phục duy trì hai danh sách
- Danh sách cam kết Các giao dịch đã cam kết kể từ điểm kiểm tra cuối cùng.
- Danh sách hoạt động Giao dịch vẫn đang hoạt động (chưa được cam kết).
REDO được áp dụng cho các hoạt động VIẾT của giao dịch đã cam kết theo thứ tự nhật ký. Các giao dịch đang hoạt động (không được cam kết) sẽ bị hủy và phải được gửi lại.
Dòng thời gian mẫu
Điểm kiểm tra (t1) Sự cố (t2) T1 (đã cam kết) T2 → REDO T3 → REDO T4 → Bỏ qua (không có cam kết) T5 → Bỏ qua (không có cam kết)T1 đã cam kết trước điểm kiểm tra không cần làm lại. T2, T3 cam kết sau checkpoint phải thực hiện lại. T4, T5 không bao giờ cam kết bị bỏ qua (không có thay đổi nào trên đĩa khi cập nhật bị trì hoãn).
Tối ưu hóa LÀM LẠI
Nếu mục X được cập nhật nhiều lần bởi các giao dịch đã cam kết thì chỉ cần làm lại lần cập nhật cuối cùng
- Truyền nhật ký theo thứ tự ngược lại.
- Duy trì danh sách các mục đã được làm lại.
- Bỏ qua các mục đã có trong danh sách (giá trị cuối cùng đã được khôi phục).
- Chỉ LÀM LẠI các mục chưa có trong danh sách, sau đó thêm chúng.
Ưu điểm và hạn chế
Kết luận
Cập nhật trì hoãn NO-UNDO/REDO trì hoãn việc ghi đĩa cho đến khi cam kết, loại bỏ nhu cầu thực hiện các thao tác UNDO trong quá trình khôi phục. Chỉ các giao dịch đã cam kết sau điểm kiểm tra cuối cùng mới cần REDO. Điều này giúp đơn giản hóa quá trình khôi phục nhưng hạn chế tính đồng thời và yêu cầu đủ dung lượng bộ đệm để chứa tất cả các thay đổi chưa được cam kết.