« Home « Kết quả tìm kiếm

Hệ quản trị cơ sở dữ liệu - Hệ thống phục hồi - Chương 6


Tóm tắt Xem thử

- Vì vậy, hệ quản trị cơ sở dữ liệu phải có các cơ chế đáp ứng lại nguy cơ hệ thống bị hỏng hóc, nhằm đảm bảo tính nguyên tử và tính lâu bền của các giao dịch.
- Nhiệm vụ quan trọng sau cùng là đề ra các giải pháp nhằm đảm bảo tính nhất quán của cơ sở dữ liệu và tính nguyên tử của giao dịch mỗi khi hỏng hóc đã phát sinh.
- Các hành động được thực hiện trong suốt quá trình hoạt động bình thường của giao dịch nhằm đảm bảo có đầy đủ thông tin cho việc phục hồi sau này..
- Các giao dịch nhập ( input ) thông tin từ đĩa vào bộ nhớ chính và xuất ( output ) thông tin theo chiều ngược lại.
- Mỗi giao dịch T i có một vùng làm việc riêng ở đó các bản sao cùa tất cả các hạng mục dữ liệu được truy xuất và cập nhật được lưu giữ.
- Vùng làm việc này được tạo ra khi giao dịch khởi động.
- Nó bị xoá đi khi giao dịch bàn giao ( commit) hoặc huỷ bỏ (abort).
- Mỗi hạng mục dữ liệu x được trữ trong vùng làm việc của giao dịch T i sẽ được ký hiệu là x i .
- Giao dịch T i trao đổi với hệ cơ sở dữ liệu bằng cách chuyển dữ liệu đến/ra vùng làm việc của nó sang vùng đệm của hệ thống..
- Khi một giao dịch cần truy xuất hạng mục dữ liệu X lần đầu, nó phải thực hiện Read(X)..
- Sau khi giao dịch truy xuất X lần cuối, nó thực hiện Write(X) để ghi lại sự thay đổi của X trong CSDL..
- Trở lại với ví dụ đơn giản về hệ thống ngân hàng: Giao dịch T i thực hiện việc chuyển $50 từ tài khoản A sang tài khoản B.
- Định danh giao dịch ( transaction identifier.
- định danh duy nhất của giao dịch thực hiện hoạt động write.
- Giao dịch T i đã khởi động..
- Giao dịch T i đã thực hiện thao tác ghi trên hạng mục dữ liệu X j , X j.
- Giao dịch T i đã bàn giao..
- Giao dịch Ti đã huỷ bỏ..
- Mỗi khi một giao dịch thực hiện một thao tác ghi, trước tiên phải tạo ra một log record cho thao tác ghi đó ( trong log file.
- trước khi giao dịch thay đổi cơ sở dữ liệu.
- Kỹ thuật cập nhật trì hoãn đảm bảo tính nguyên tử của giao dịch bằng cách ghi lại tất cả những sửa đổi cơ sở dữ liệu vào sổ ghi lộ trình (log), nhưng trì hoãn sự thực hiện tất cả các thao tác viết dữ liệu ra đĩa của giao dịch cho đến khi giao dịch bàn giao một phần (partially commits.
- Nhắc lại rằng: một giao dịch được gọi là bàn giao một phần khi hành động cuối cùng của nó được thực hiện xong.
- Kỹ thuật cập nhật trì hoãn được trình bày trong phần này giả thiết rằng các giao dịch được thực hiện một cách tuần tự..
- Khi giao dịch bàn giao một phần, thông tin trên log kết hợp với giao dịch được sử dụng trong việc viết trì hoãn.
- Nếu hệ thống có sự cố trước khi giao dịch hoàn thành việc thực hiện của nó hoặc giao dịch bị bỏ dở khi đó thông tin trên log bị bỏ lơ..
- Sự thực thi của một giao dịch được tiến triển như sau:.
- Trước khi giao dịch T i bắt đầu thực hiện, một mẫu tin <.
- Cuối cùng, khi giao dịch T i bàn giao một phần, mẫu tin <.
- Khi giao dịch bàn giao một phần, các mẫu tin trong sổ lộ trình kết hợp với giao dịch sẽ được sử dụng để thực hiện việc ghi trì hoãn các hạng mục dữ liệu ra đĩa.
- Giả thiết các giao dịch được thực hiện tuần tự: T 0 rồi tới T 1 .
- Sau khi có sự cố xảy ra, hệ thống phục hồi sẽ tham khảo sổ lộ trình để chọn ra những giao dịch nào cần được làm lại (redo).
- Giao dịch T i cần được làm lại khi và chỉ khi sổ nhật ký có chứa cả hai mẫu tin <T i start>.
- Thủ tục làm lại giao dịch T i như sau:.
- redo(T i ) đặ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 T i .
- LOG CƠ SỞ DỮ LIỆU.
- 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 T 0 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.
- 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 T 1 vừa được ghi ra thiết bị lưu trữ bền.
- 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.
- Sự thực thi của một giao dịch được tiến hành như sau:.
- Trước khi giao dịch T i bắt đầu sự thực hiện, một mẫu tin <.
- Ngoài ra, cũng cần chú ý là mẫu tin log cho hành động write(X) của giao dịch T i , tức là mẫu tin <T i , X, V 1 , V 2 >.
- undo(T i ) đặ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 T i .
- 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 T i cần được huỷ bỏ khi sổ ghi chứa mẫu tin <T i start>.
- Giao dịch T i cần được làm lại khi sổ ghi có chứa cả mẫu tin <T i start>.
- Do đó giao dịch T 0 cần phải được huỷ bỏ.
- Theo các giải thuật vừa nêu, hầu hết các giao dịch cần được làm lại đã ghi những dữ liệu được cập nhật ra cơ sở dữ liệu rồi.
- Các giao dịch sẽ không được phép thực hiện bất kỳ thao tác cập nhật dữ liệu nào (ví dụ như ghi các khối đệm, ghi các mẫu tin log) khi hành động đặt điểm kiểm soát đang được thực hiện..
- Xét một giao dịch T i đã bàn giao (commit) trước một điểm kiểm soát.
- Vì vậy, trong giai đoạn phục hồi sau lỗi, người ta không cần phải làm lại (redo) giao dịch T i.
- Mẫu tin này chỉ ra giao dịch T i.
- Chúng ta ký hiệu tập những giao dịch vừa nói là T.
- Với mọi giao dịch T k ∈ T mà không có mẫu tin <T k commit>.
- Với mọi giao dịch T k ∈ T mà có mẫu tin <T k commit>.
- Khi giao dịch khởi động, hai bảng trang này giống nhau.
- Bảng trang bóng sẽ không thay đổi suốt quá trình hoạt động của giao dịch.
- Bảng trang hiện hành sẽ bị thay đổi mỗi khi giao dịch thực hiện tác vụ write.
- Giả sử giao dịch thực hiện tác vụ write(X) và hạng mục dữ liệu X được chứa trong trang thứ i..
- Đảm bảo rằng tất cả các trang đệm trong bộ nhớ chính đã được giao dịch sửa đổi phải được xuất ra đĩa..
- Như vậy, bảng trang hiện hành sẽ trở thành bảng trang bóng và giao dịch được bàn giao..
- Nếu sự cố xảy ra trước khi hoàn thành bước thứ 3, hệ thống sẽ trở về trạng thái trước khi giao dịch được thực hiện.
- Nếu sự cố xảy ra sau khi bước thứ 3 hoàn thành, hiệu quả của giao dịch được bảo tồn.
- Ví dụ trong hình 5.3 dưới đây mô phỏng lại trạng thái của các bảng trang hiện hành và bảng trang bóng khi giao dịch thực hiện thao tác ghi lên trang thứ tư của cơ sở dữ liệu có 10 trang..
- Mỗi khi giao dịch bàn giao, các trang chứa giá trị dữ liệu cũ đã bị sửa đổi bởi giao dịch sẽ trở thành không truy xuất được.
- PHỤC HỒI VỚI CÁC GIAO DỊCH CẠNH TRANH.
- Cho dến bây giờ, ta chỉ xét các kỹ thuật phục hồi áp dụng cho các giao dịch được thực thi tuần tự.
- Ý tưởng thực hiện là: Không quan tâm đến số lượng các giao dịch cạnh tranh, hệ thống vẫn sử dụng một vùng đệm đĩa và một sổ ghi lộ trình.
- Các khối đệm được chia sẻ bởi tất cả các giao dịch.
- Chúng ta sẽ cho phép việc cập nhật tức thời cơ sở dữ liệu và cho phép một khối đệm có nhiều hạng mục dữ liệu được cập nhật bởi một hoặc nhiều giao dịch..
- Để cuộn lại một giao dịch thất bại ( failed transaction.
- người ta phải huỷ bỏ ( undo) các cập nhật được thực hiện bởi giao dịch.
- Giả sử giao dịch T 0 phải bị cuộn lại và một hạng mục dữ liệu Q đã bị T 0 thay đổi giá trị và cần phải được đặt lại giá trị cũ.
- Giả thiết lại có giao dịch thứ hai T 1 cũng vừa cập nhật Q xong, trước khi T 0 bị cuộn lại.
- CUỘN LẠI GIAO DỊCH:.
- Phương pháp để cuộn lại (rollback) một giao dịch T i, sử dụng sổ ghi, trong môi trường cạnh tranh như sau:.
- 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.
- 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 T i .
- 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..
- 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:.
- 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..
- Với mọi giao dịch T i trong L, nếu T i không thuộc redo-list thì thêm T i vào undo-list..
- Dò ngược lại sổ ghi và thực hiện thủ tục undo đối với mỗi log record thuộc về giao dịch T i trong undo-list.
- Các log record của các giao dịch nằm trong danh sách redo-list sẽ bị bỏ qua trong giai đoạn này.
- được tìm thấy cho mọi giao dịch T i thuộc danh sách undo-list..
- gần đây nhất và thực hiện thủ tục redo đối với mỗi log record thuộc về giao dịch T i nằm trong danh sách redo-list.
- Trong giai đoạn này, bỏ qua các log record của các giao dịch thuộc danh sách undo-list..
- Sau khi tất cả các giao dịch trong danh sách undo-list bị huỷ bỏ, tất cả các giao dịch trong danh sách redo-list sẽ được làm lại.
- Sau khi tiến trình phục hồi thành công, xử lý giao dịch được tiếp tục..
- Việc thực hiện huỷ bỏ các giao dịch trong undo-list trước khi làm lại các giao dịch trong redo-list có ý nghĩa rất quan trọng.
- Giao dịch T i đổi A thành 20 sau đó T i bị huỷ bỏ.
- Sau đó, một giao dịch khác T j cập nhật A thành 30.
- Kỹ thuật fuzzy checkpoint cho phép các giao dịch được cập nhật dữ liệu trên các khối đệm khi checkpoint-record đã được viết xong nhưng trước thời điểm các khối đệm đã sửa đổi được ghi ra đĩa..
- Bằng ví dụ, hãy chỉ ra rằng: tình trạng không nhất quán dữ liệu sẽ xảy ra nếu các log record không được ghi ra thiết bị lưu trữ bền trước khi giao dịch bàn giao (commit).

Xem thử không khả dụng, vui lòng xem tại trang nguồn
hoặc xem Tóm tắt