<< Chapter < Page Chapter >> Page >

Cuộn lại giao dịch:

Phương pháp để cuộn lại (rollback) một giao dịch Ti, sử dụng sổ ghi, trong môi trường cạnh tranh như sau:

  1. Dò ngược sổ ghi lộ trình để tìm ra các log record có dạng<Ti, Xj, V1, V2>.
  2. Hạng mục dữ liệu Xj sẽ được trả lại giá trị cũ V1.
  3. Việc dò tìm kết thúc khi tìm thấy mẫu tin<Ti start>.

Việc dò ngược sổ ghi lộ ¹eó một ý nghĩa rất quan trọng, do một giao dịch có thể đã cập nhật một hạng mục dữ liệu nhiều hơn một lần. Một ví dụ: Xét một cặp log records như sau:

<Ti, A, 10, 20>

<Ti, A, 20, 30>

Cặp mẫu tin này thể hiện hai hành động cập nhật hạng mục dữ liệu A của giao dịch Ti. Nếu dò ngược sổ ghi lộ trình, A sẽ được trả về giá trị đúng là 10. Ngược lại, A sẽ nhận giá trị sai là 20.

Nếu kỹ thuật strict two-phase locking được sử dụng để điều khiển cạnh tranh, thì việc trả về giá trị cũ cho một hạng mục dữ liệu sẽ không xoá đi những tác động của các giao dịch khác lên hạng mục dữ liệu này.

Các điểm kiểm soát

Ở phần V.4.3, người ta đã sử dụng điểm kiểm soát (checkpoint) để làm giảm số lượng các log record mà hệ thống phục hồi phải dò tìm trong sổ ghi trong giai đoạn phục hồi sau lỗi. Nhưng, do đã giả thiết là không có cạnh tranh nên giải pháp V.4.3 chỉ xét đến những giao dịch sau trong quá trình khôi phục lỗi:

  • Những giao dịch được khởi động sau điểm kiểm soát gần đây nhất.
  • Một giao dịch (nếu có) đang trong trạng thái hoạt động (active) tại thời điểm người ta đặt điểm kiểm soát gần đây nhất.

Tình huống càng phức tạp khi các giao dịch được thực thi cạnh tranh. Có nghĩa là tại thời điểm đặt điểm kiểm soát, có thể có nhiều giao dịch đang ở trong trạng thái hoạt động.

Trong một hệ thống xử lý các giao dịch cạnh tranh, ta yêu cầu rằng: một mẫu tin ghi dấu kiểm soát (checkpoint log record) phải có dạng như sau:

<checkpoint L>

Trong đó L là danh sách các giao dịch đang hoạt động tại thời điểm đặt điểm kiểm soát.

Một lần nữa, ta qui ước rằng: khi hành động đặt điểm kiểm soát đang diễn ra, các giao dịch không được phép thực hiện bất kỳ thao tác cập nhật dữ liệu nào cả trên các khối đệm lẫn trên sổ ghi lộ trình.

Tuy nhiên, qui ước trên lại gây phiền toái, bởi vì các giao dịch phải ngừng hoạt động khi đặt điểm kiểm soát. Một kỹ thuật nâng cao giải quyết điểm phiền toái này là “Điểm kiểm soát mờ” (fuzzy checkpoint).

Phục hồi khởi động lại ( restart recovery )

Khi hệ thống phục hồi sau lỗi, nó tạo ra hai danh sách: undo-list bao gồm các giao dịch cần phải huỷ bỏ và redo-list bao gồm danh sách các giao dịch cần được làm lại.

Qui trình tạo lập hai danh sách redo-list, undo-list được thực hiện như sau:

  1. Đầu tiên, chúng sẽ rỗng.
  2. Dò ngược sổ ghi lộ trình, kiểm tra các mẫu tin cho đến khi tìm được mẫu tin<checkpoint>đầu tiên:
  • Với mỗi mẫu tin được tìm thấy theo dạng<Ti commit>, ta thêm Ti vào trong redo-list.
  • Với mỗi mẫu tin được tìm thấy theo dạng<Ti start>, nếu Ti không thuộc redo-list thì thêm Ti vào trong undo-list.
  • Khi tất cả các log record đã được xem xét, ta kiểm tra danh sách L trong mẫu tin<checkpoint L>. Với mọi giao dịch Ti trong L, nếu Ti không thuộc redo-list thì thêm Ti vào undo-list.

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