Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> SQL

Khôi phục cập nhật bị trì hoãn:Sử dụng NO-UNDO và REDO để đảm bảo tính toàn vẹn dữ liệu đáng tin cậy

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ế

Ưu điểm Hạn chế Không cần khôi phục khi thất bại (NO-UNDO) Các mục bị khóa ghi vẫn bị khóa cho đến khi xác nhận Không khôi phục xếp tầng (các mục bị khóa cho đến khi xác nhận) Yêu cầu không gian bộ đệm cho tất cả các bản cập nhật cho đến khi cam kết Các giao dịch bị hủy chỉ được gửi lại Chỉ thực tế đối với các giao dịch ngắn với một vài thay đổi

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.

Khôi phục cập nhật bị trì hoãn:Sử dụng NO-UNDO và REDO để đảm bảo tính toàn vẹn dữ liệu đáng tin cậy