KHÔI PHỤC TỪ DEADLOCK

Một phần của tài liệu Tài liệu máy hệ quản trị cơ sở dữ liệu (Trang 149)

QUẢN TRỊ DEADLOCK

KHÔI PHỤC TỪ DEADLOCK

Khi thuật toán phát hiện xác định được sự tồn tại của deadlock, hệ thống phải khôi phục từ deadlock. Giải pháp chung nhất là cuộn lại một vài giao dịch để phá vỡ deadlock. Ba việc cần phải làm là:

1. Chọn nạn nhân. Đã cho một tập các giao dịch bị deadlock, ta phải xác định

giao dịch nào phải cuộn lại để phá vỡ deadlock. Ta sẽ cuộn lại các giao dịch sao cho giá phải trả là tối thiểu. Nhiều nhân tố xác định giá của cuộn lại: 1. Giao dịch đã tính toán được bao lâu và bao lâu nữa.

2. Giao dịch đã sử dụng bao nhiêu hạng mục dữ liệu

3. Giao dịch cần bao nhiêu hạng mục dữ liệu nữa để hoàn tất. 4. Bao nhiêu giao dịch bị cuộn lại.

5. Cuộn lại (Rollback).Mỗi khi ta đã quyết định được giao dịch nào phải bị cuộn lại, ta phải xác định giao dịch này bị cuộn lại bao xa. Giải pháp đơn giản nhất là cuộn lại toàn bộ: bỏ dở giao dịch và bắt đầu lại nó. Tuy nhiên, sẽ là hiệu quả hơn nếu chỉ cuộn lại giao dịch đủ xa như cần thiết để phá vỡ deadlock. Nhưng phương pháp này đòi hỏi hệ thống phải duy trì các thông tin bổ xung về trạng thái của tất cả các giao dịch đang chạy.

6. Sự chết đói (Starvation).Trong một hệ thống trong đó việc chọn nạn nhân dựa trên các nhân tố giá, có thể xảy ra là một giao dịch luôn là nạn nhân của việc chọn này và kết quả là giao dịch này không bao giờ có thể hoàn thành. Tình huống này được gọi là sự chết đói. Phải đảm bảo việc chọn nạn nhân không đưa đến chết đói. Một giải pháp xem số lần bị cuộn lại của một giao dịch như một nhân tố về giá.

BÀI TẬP

Một phần của tài liệu Tài liệu máy hệ quản trị cơ sở dữ liệu (Trang 149)

Tải bản đầy đủ (PDF)

(173 trang)