Cập nhật trì hoãn cơ sở dữ liệu (Deferred Database Modification)

Một phần của tài liệu Bài giảng CSDL Nâng cao (Trang 32)

 Tư tưởng chính của ký thuật cập nhật trì hoãn là trì hoãn việc cập nhật thực sự vào csdl cho đến khi giao dịch đạt tới trạng thái commit.

33

 Một giao dịch không thể thay đổi csdl trên đĩa cho đến khi nó đạt tới trạng thái commit.

 Một giao dịch không thể đạt tới trạng thái commit cho đến khi tất cả các thao tác cập nhật của nó được ghi lại trên file log (WAL: write – ahead logging).

 Các thao tác CSDL sẽ không được cập nhật cho đến khi giao dịch hoàn tất nên không cần các thao tác UNDO. Có thể phải REDO trong trường hợp hệ thống lỗi sau khi giao dịch đã hoàn tất nhưng trước khi tất cả các thay đổi được ghi vào cơ sở dữ liệu. Giao dịch Ti cần được REDO nếu trong file log chứa cả hai bản ghi: <Ti start> và <Ti commit>. Cũng vì vậy mà kỹ thuật phục hồi này còn được gọi là NO – UNDO/ REDO recovery algorithm. Bảng sau chỉ ra các loại bản ghi được tạo ra trong file log:

Thao tác của giao dịch Bản ghi trong file Log

Giao dịch Ti bắt đầu Ti, Start

Ti Write(X) Ti, X, New_Value

Giao dịch Ti hoàn tất Ti, Commit

 Ví dụ: Xét ba mục dữ liệu A, B, C với các giá trị ban đầu lần lượt là 1000, 2000, 700 và hai giao dịch T1, T2:

T0: Read(A) Bản ghi trong file log

A = A – 50 T0,Start Write(A) T0, A, 950 Read(B) T0, B, 2050 B = B + 50 T0, Commit Write(B) T1, Start T1, C, 600 T1: Read(C) T1, Commit C = C – 100 Write(C)

Sau đây là một số tình huống xảy ra và hành động của hệ thống phục hồi sử dụng kỹ thuật cập nhật trì hoãn cơ sở dữ liệu:

34

Tình huống Hệ thống phục hồi Giá trị các mục dữ liệu

A B C

Lỗi sau khi T0 vừa thực hiện thao tác write B. Không làm gì. 1000 2000 700 Lỗi sau khi T1 thực hiện Write(C). REDO(T0) 950 2050 700

Một phần của tài liệu Bài giảng CSDL Nâng cao (Trang 32)