JavaScript is required

Thuật toán sử dụng phương pháp tiếp cận Optimistic (lạc quan) dựa trên nhãn thời gian để kiểm tra các giao dịch đến theo một thứ tự chính xác. Khi yêu cầu ghi mục dữ liệu X, thuật toán không thực hiện gì khi điều kiện nào xẩy ra?

A.

A. ts(Ti) < rts(X)

</>

B.

B. rts(X) < ts(Ti) và ts(Ti) < wts(X)

</>

C.

C. ts(Ti) >= wts(X) và ts(Ti) >= rts(X)

D.

D. ts(Ti) >= wts(X)

Trả lời:

Đáp án đúng: A


Thuật toán Optimistic concurrency control (kiểm soát đồng thời lạc quan) dựa trên nhãn thời gian (timestamp) hoạt động bằng cách kiểm tra tính hợp lệ của các giao dịch khi chúng chuẩn bị commit (ghi dữ liệu vào cơ sở dữ liệu). Trong ngữ cảnh này: * `ts(Ti)`: Nhãn thời gian của giao dịch Ti. * `rts(X)`: Nhãn thời gian đọc (read timestamp) của mục dữ liệu X, biểu thị nhãn thời gian lớn nhất của giao dịch đã đọc X. * `wts(X)`: Nhãn thời gian ghi (write timestamp) của mục dữ liệu X, biểu thị nhãn thời gian lớn nhất của giao dịch đã ghi X. Khi một giao dịch Ti muốn ghi vào mục dữ liệu X, thuật toán cần đảm bảo rằng giao dịch Ti không vi phạm tính tuần tự (serializability). Điều này được kiểm tra bằng cách so sánh `ts(Ti)` với `rts(X)` và `wts(X)`. Phân tích các lựa chọn: * **A. ts(Ti) < rts(X):** Nếu nhãn thời gian của giao dịch Ti nhỏ hơn nhãn thời gian đọc của X, điều này có nghĩa là một giao dịch khác đã đọc X sau thời điểm Ti bắt đầu. Giao dịch Ti không thể ghi vào X mà không vi phạm tính tuần tự. Khi điều kiện này xảy ra, thuật toán sẽ hủy (rollback) giao dịch Ti. * **B. rts(X) < ts(Ti) và ts(Ti) < wts(X):** Điều này có nghĩa là một giao dịch khác đã ghi vào X sau khi giao dịch Ti đọc X nhưng trước khi Ti ghi vào X. Điều này cũng vi phạm tính tuần tự và giao dịch Ti sẽ bị hủy. * **C. ts(Ti) >= wts(X) và ts(Ti) >= rts(X):** Nếu nhãn thời gian của giao dịch Ti lớn hơn hoặc bằng cả nhãn thời gian đọc và ghi của X, điều này có nghĩa là giao dịch Ti có thể ghi vào X mà không vi phạm tính tuần tự. Trong trường hợp này, `wts(X)` sẽ được cập nhật thành `ts(Ti)`. * **D. ts(Ti) >= wts(X):** Điều kiện này chỉ đảm bảo rằng giao dịch Ti đến sau giao dịch đã ghi vào X. Tuy nhiên, nếu `ts(Ti) < rts(X)`, thì giao dịch Ti vẫn phải bị hủy để duy trì tính tuần tự. Dựa vào phân tích trên, khi yêu cầu ghi mục dữ liệu X, thuật toán *không thực hiện gì* (tức là cho phép ghi và cập nhật wts(X) ) khi `ts(Ti) >= wts(X)` và `ts(Ti) >= rts(X)`.

Câu hỏi liên quan