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.
ts(Ti) < rts(X)
B.
rts(X) < ts(Ti) và ts(Ti) < wts(X)
C.
ts(Ti) >= wts(X) và ts(Ti) >= rts(X)
D.
ts(Ti) >= wts(X)
Trả lời:

Đáp án đúng: B


Thuật toán optimistic concurrency control sử dụng nhãn thời gian để quản lý việc truy cập đồng thời vào dữ liệu. Khi một giao dịch Ti muốn ghi vào mục dữ liệu X, thuật toán sẽ kiểm tra các điều kiện sau: * `ts(Ti)`: Nhãn thời gian của giao dịch Ti. * `rts(X)`: Nhãn thời gian đọc của mục dữ liệu X (thời gian giao dịch cuối cùng đọc X). * `wts(X)`: Nhãn thời gian ghi của mục dữ liệu X (thời gian giao dịch cuối cùng ghi X). Nếu điều kiện `ts(Ti) < rts(X)` xảy ra, nghĩa là có một giao dịch khác đã đọc X sau khi Ti bắt đầu, điều này có thể dẫn đến xung đột. Trong trường hợp này, giao dịch Ti phải được rollback (hủy bỏ) và khởi động lại. Nếu điều kiện `ts(Ti) < wts(X)` xảy ra, nghĩa là có một giao dịch khác đã ghi vào X sau khi Ti bắt đầu. Việc Ti ghi vào X sẽ ghi đè lên dữ liệu đã được ghi bởi giao dịch kia, dẫn đến mất mát dữ liệu hoặc tính nhất quán bị vi phạm. Trong trường hợp này, giao dịch Ti phải được rollback. Như vậy, 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) khi không có xung đột xảy ra, tức là khi cả hai điều kiện `ts(Ti) >= wts(X)` và `ts(Ti) >= rts(X)` đều đúng. Điều này có nghĩa là giao dịch Ti bắt đầu sau khi các giao dịch khác đã đọc hoặc ghi X xong. Vậy đáp án đúng là C. ts(Ti) >= wts(X) và ts(Ti) >= rts(X).

Câu hỏi liên quan