Khi một giao dịch cần kiểm tra dữ liệu trước, sau đó mới quyết định có cập nhật hay không. Anh/chị cần thiết lập khoá như thế nào?
A.Yêu cầu cấp một khoá ghi cho nó trên một mục dữ liệu mà trên mục đó đang có một khoá đọc (của giao dịch khác).
B.Yêu cầu cấp một khoá ghi cho nó trên một mục dữ liệu mà trên mục đó đang có một khoá chờ được giải phóng.
C.Yêu cầu cấp một khoá đọc cho nó trên một mục dữ liệu sau đó chuyển giao giao dịch và yêu cầu khoá ghi.
D.Yêu cầu cấp một khoá đọc cho nó trên một mục dữ liệu sau đó nâng cấp khoá lên thành khoá ghi.
Đáp án đúng: D
Câu hỏi này liên quan đến việc quản lý khóa (locking) trong các hệ quản trị cơ sở dữ liệu (DBMS) khi thực hiện các giao dịch (transaction) để đảm bảo tính toàn vẹn dữ liệu. Khi một giao dịch cần kiểm tra dữ liệu trước khi quyết định có cập nhật hay không, chúng ta cần một cơ chế để đảm bảo rằng dữ liệu không bị thay đổi bởi giao dịch khác trong quá trình kiểm tra và cập nhật.
Phân tích các lựa chọn:
- A. Yêu cầu cấp một khoá ghi cho nó trên một mục dữ liệu mà trên mục đó đang có một khoá đọc (của giao dịch khác). Việc này có thể dẫn đến xung đột khóa (lock conflict). Hệ thống DBMS thường không cho phép cấp khóa ghi nếu đã có khóa đọc của giao dịch khác trên cùng một mục dữ liệu, vì nó vi phạm tính cô lập (isolation) của giao dịch.
- B. Yêu cầu cấp một khoá ghi cho nó trên một mục dữ liệu mà trên mục đó đang có một khoá chờ được giải phóng. Tương tự như trên, cấp khóa ghi khi có khóa chờ giải phóng cũng có thể dẫn đến xung đột hoặc deadlock.
- C. Yêu cầu cấp một khoá đọc cho nó trên một mục dữ liệu sau đó chuyển giao giao dịch và yêu cầu khoá ghi. Cách này không phù hợp. Việc "chuyển giao giao dịch" không phải là một thao tác chuẩn trong quản lý khóa.
- D. Yêu cầu cấp một khoá đọc cho nó trên một mục dữ liệu sau đó nâng cấp khoá lên thành khoá ghi. Đây là phương pháp phù hợp nhất. Giao dịch ban đầu yêu cầu một khóa đọc để kiểm tra dữ liệu. Nếu sau khi kiểm tra, giao dịch cần cập nhật dữ liệu, nó có thể yêu cầu nâng cấp khóa đọc lên thành khóa ghi. Cơ chế nâng cấp khóa (lock upgrade) cho phép giao dịch giữ quyền truy cập vào dữ liệu trong suốt quá trình kiểm tra và cập nhật, đồng thời giảm thiểu nguy cơ deadlock.
Vậy, đáp án đúng là D.