<< Chapter < Page Chapter >> Page >

figure VI-

Sau đây là một số tình huống mô phỏng:

  1. Giả sử lỗi hệ thống xảy ra sau khi mẫu tin log cho hành động write(B) của giao dịch T0 vừa được ghi ra thiết bị lưu trữ bền. Khi hệ thống khởi động trở lại, sẽ không có hành động “thực hiện lại giao dịch” nào cần phải làm, do không có mẫu tin ghi commit nào xuất hiện trong sổ lộ trình. Nghĩa là giá trị của A,B và C vẫn giữ nguyên là $1000, $2000 và $700.
  2. Giả sử lỗi hệ thống xảy ra sau khi mẫu tin log cho hành động write(C) của giao dịch T1 vừa được ghi ra thiết bị lưu trữ bền. Khi hệ thống hoạt động trở lại, thủ tục redo(T0) sẽ được thực hiện do có sự xuất hiện của mẫu tin<T0 commit>trong sổ lộ trình. Sau khi thủ tục này được thực thi, giá trị của A và B sẽ là $950 và $2050.

Cập nhật tức thời cơ sở dữ liệu (immediate database modification):

Kỹ thuật cập nhật tức thời cho phép các thao tác sửa đổi cơ sở dữ liệu có quyền xuất dữ liệu tức thời ra đĩa trong khi giao dịch vẫn còn ở trong trạng thái hoạt động ( active state ). Hành động thay đổi nội dung dữ liệu tức thời của các giao dịch đang hoạt động được gọi là “những thay đổi chưa được bàn giao” ( uncommitted modifications).

Sự thực thi của một giao dịch được tiến hành như sau:

  • Trước khi giao dịch Ti bắt đầu sự thực hiện, một mẫu tin<Ti start>được ghi ra sổ lộ trình.
  • Trước khi Ti thực hiện thao tác write(X), một mẫu tin<Ti, X, V1, V2>được ghi ra sổ lộ trình.
  • Cuối cùng, khi giao dịch Ti bàn giao một phần, mẫu tin<Ti commit>được ghi ra sổ lộ trình.

Cần phải đảm bảo rằng, trước khi hoạt động ghi hạng mục dữ liệu diễn ra, các mẫu tin log đã được ghi thành công ra các thiết bị lưu trữ bền. Ngoài ra, cũng cần chú ý là mẫu tin log cho hành động write(X) của giao dịch Ti, tức là mẫu tin<Ti, X, V1, V2>có chứa cả hai giá trị mới (V2) và cũ (V­1) của hạng mục dữ liệu X.

Trở lại với ví dụ trong phần V.4.1, ta có một phần của sổ lộ trình liên quan đến các hoạt động của T0 và T1 như sau:

<T0 start><T0 , A, 1000, 950><T0 , B, 2000, 2050><T0 commit><T1 start><T1 , C, 700, 600><T1 commit>

figure VI-

Bảng mô tả trạng thái của sổ ghi lộ trình và cơ sở dữ liệu như sau:

LOG CƠ SỞ DỮ LIỆU
<T0 start><T0 , A, 1000, 950><T0 , B, 2000, 2050><T0 commit><T1 start><T1 , C, 700, 600><T1 commit> A=950B=2050 C=600

figure VI-

Kỹ thuật cập nhật tức thời sử dụng hai thủ tục khôi phục sau lỗi:

  • undo(Ti) đặt lại giá trị cũ cho tất cả các hạng mục dữ liệu được cập nhật bởi giao dịch Ti. Các giá trị cũ sẽ được tìm thấy trong sổ lộ trình ( log ).
  • redo(Ti) đặt giá trị mới cho tất cả các hạng mục dữ liệu được cập nhật bởi giao dịch Ti. Các giá trị mới sẽ được tìm thấy trong sổ lộ trình (log).

Sau khi lỗi xuất hiện, hệ thống phục hồi tham khảo sổ ghi để quyết định những giao dịch nào cần được làm lại (redo) và những giao dịch nào cần được huỷ bỏ (undo).

  • Giao dịch Ti cần được huỷ bỏ khi sổ ghi chứa mẫu tin<Ti start>nhưng không có mẫu tin<Ti commit>.
  • Giao dịch Ti cần được làm lại khi sổ ghi có chứa cả mẫu tin<Ti start>lẫn mẫu tin<Ti commit>.

Sau đây là một số tình huống mô phỏng:

  1. Giả sử lỗi hệ thống xảy ra sau khi mẫu tin log cho hành động write(B) của giao dịch T0 vừa được ghi ra thiết bị lưu trữ bền. Khi hệ thống khởi động trở lại, nó sẽ tìm thấy mẫu tin<T0 ­start>trong sổ ghi, nhưng không có mẫu tin<T0 ­commit>tương ứng. Do đó giao dịch T0 cần phải được huỷ bỏ. Nghĩa là thủ tục undo(T0) sẽ được gọi và giá trị của A,B và C vẫn giữ nguyên là $1000, $2000 và $700.
  2. Giả sử lỗi hệ thống xảy ra sau khi mẫu tin log cho hành động write(C) của giao dịch T1 vừa được ghi ra thiết bị lưu trữ bền. Khi hệ thống hoạt động trở lại, hai thủ tục redo(T0) và undo(T1) sẽ được thực hiện. Do có sự xuất hiện của các mẫu tin<T0 start>,<T0 commit>,<T1 start>trong sổ lộ trình. Sau khi hai thủ tục này được thực thi, giá trị của A, B, C sẽ là $950,ì $2050 và $700.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Hệ quản trị cơ sở dữ liệu. OpenStax CNX. Jul 31, 2009 Download for free at http://cnx.org/content/col10838/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Hệ quản trị cơ sở dữ liệu' conversation and receive update notifications?

Ask