Anh/chị hãy cho biết phát biểu nào về lịch trình tuần tự hóa là đúng?
Trả lời:
Đáp án đúng: C
Để trả lời câu hỏi này, chúng ta cần hiểu rõ về lịch trình tuần tự hóa (serializable schedule) và các khái niệm liên quan:
- Lịch trình tuần tự hóa: Một lịch trình (schedule) là tuần tự hóa được nếu kết quả của nó tương đương với việc thực hiện một số lịch trình tuần tự (serial schedule). Nói cách khác, nếu có một thứ tự thực hiện các giao dịch mà khi thực hiện theo thứ tự đó, kết quả tương tự như lịch trình ban đầu, thì lịch trình đó tuần tự hóa được.
- Khả năng khôi phục (recoverability): Một lịch trình có thể khôi phục được nếu, với mỗi giao dịch T trong lịch trình, nếu T commit thì không có giao dịch nào khác đọc dữ liệu do T ghi trước khi T commit. Điều này đảm bảo rằng nếu một giao dịch thất bại, hệ thống có thể khôi phục lại trạng thái nhất quán.
- 2PL (Two-Phase Locking): Một giao thức khóa hai pha là một giao thức kiểm soát đồng thời đảm bảo tính tuần tự hóa (serializability). Giao thức này chia việc thực hiện một giao dịch thành hai giai đoạn: giai đoạn mở rộng (growing phase) nơi các khóa được thu thập và giai đoạn thu hẹp (shrinking phase) nơi các khóa được giải phóng.
- Hành động xung đột: Hai hành động xung đột nếu chúng thuộc về các giao dịch khác nhau, truy cập cùng một mục dữ liệu và ít nhất một trong số chúng là một thao tác ghi.
Bây giờ, hãy xem xét từng phương án:
- A. Mọi lịch trình tuần tự hóa đều có thể khôi phục được. Phát biểu này sai. Một lịch trình tuần tự hóa có thể không khôi phục được nếu một giao dịch đọc dữ liệu từ một giao dịch khác đã bị abort.
- B. Mọi lịch trình có thể tuần tự hóa không chứa các hành động xung đột. Phát biểu này sai. Lịch trình tuần tự hóa vẫn có thể chứa các hành động xung đột, miễn là kết quả cuối cùng tương đương với một lịch trình tuần tự nào đó.
- C. Mọi lịch trình 2PL đều có thể tuần tự hóa được. Phát biểu này đúng. Giao thức 2PL đảm bảo tính tuần tự hóa bằng cách yêu cầu các giao dịch giữ các khóa cho đến khi chúng commit hoặc rollback.
- D. Mọi lịch trình tuần tự hoá không cần tuần tự hoá cục bộ. Phát biểu này sai. Lịch trình tuần tự hoá vẫn cần tính tuần tự cục bộ để đảm bảo tính đúng đắn của mỗi giao dịch đơn lẻ.