You are on page 1of 5

Thuật toán TO cơ bản

BTO-TM

Chờ đợi 1 thông điệp:


 Nếu là 1 thao tác giao dịch:
o Trường hợp bắt đầu giao dịch (BT – begin transaction): khởi tạo một nhãn
thời gian và gửi đến bộ xử lí dữ liệu
o Trường hợp Read, Write: tìm site chứa dữ liệu cần thực thi, gửi thao tác
op và nhãn thời gian ts(T) đến bộ lập lịch của site đó
o Trường hợp Abort, Commit: gửi op đến các site nơi mà giao dịch thực thi
 Nếu là 1 phản hồi từ bộ lập lịch SC (thể hiện 1 thao tác đã bị từ chối bởi 1 bộ lập
lịch nào đó): chuẩn bị thông điệp hủy bỏ, yêu cầu các bộ lập lịch ở các site mà
giao dịch thực thi hủy bỏ giao dịch đó, khởi tạo lại giao dịch với 1 time stamp mới
 Nếu là 1 phản hồi từ bộ xử lí dữ liệu DP : báo lại các thông tin như giá trị cần đọc,
báo đã ghi xong, báo đã commit hoặc abort.

BTO-SC
Chờ 1 thao tác và 1 nhãn thời gian:
o Nếu là đọc: xét nhãn thời gian với nhãn ghi mới nhất, nếu lớn hơn thì đc chấp
nhận, cập nhật nhãn mới
o Nếu là ghi: xét nhãn với nhãn đọc và nhãn ghi mới nhất, nếu lớn hơn cả 2 thì
được chấp nhật
o Nếu là hủy: cập nhật lại nhãn thời gian về giá trị khởi đầu

Thuật toán TO bảo toàn


Các thuật toán TO cơ bản sử dụng 2 loại để xét nhãn thời gian: đồng hồ hệ thống và bộ
đếm
 Đồng hồ hệ thống: khi các đồng hồ ở các site không sai lệch nhiều thì không dẫn
đến việc khởi động lại giao dịch nhiều lần
 Bộ đếm: khi một site không thực hiện một giao dịch mới trong 1 khoảng thời
gian, bộ đếm ở site đó sẽ có giá trị nhỏ hơn các site khác khá nhiều, mỗi lần reset
giao dịch, bộ đếm lại chỉ tăng một khoảng nhỏ (thường là +1) khiến việc reset
giao dịch diễn ra liên tục và lặp lại -> nảy sinh việc cần đồng bộ hóa bộ đếm giữa
các vị trí -> tốn chi phí khi phải cập nhật cả những thay đổi nhỏ về bộ đếm -> cách
khắc phục các bộ quản lí giao dịch từ xa gửi các thao tác đến các bộ quản lí giao
dịch ở các trạm khác để xét, nếu bộ đếm ở các trạm đó nhỏ hơn bộ đếm nhận
được thì tăng bộ đếm lên 1
Thuật toán TO bảo toàn: thay vì việc thực hiện ngay một giao dịch khi nó được chấp
nhận như ở TO cơ bản, thì TO bảo toàn sẽ lưu các thao tác vào hàng đợi để thực hiện
dần
VD:
Ở site i lưu có các hàng đợi
 Qij : R(x) ts=10; W(x) ts= 20
 Qik : R(y) ts= 9; W(y) ts=30 
 Qil : R(z) ts=15; W(z) ts=21
Khi có một giao dịch chuyển đến sẽ so sánh nhãn thời gian với 1 nhãn thời gian nhỏ nhất
đang lưu trong hàng đợi, nếu nhãn mới lớn hơn nhãn nhỏ nhất thì sẽ chấp nhận và lưu
vào hàng đợi, không thì hủy bỏ
Mỗi lần thực hiện một giao dịch sẽ chọn giao dịch có nhãn thời gian nhỏ nhất trong hàng
đợi

Thuật toán TO nhiều phiên bản


Mỗi lần thực hiện thao tác ghi sẽ tạo ra một phiên bản mới

Quy tắc:
 Thao tác đọc Ri: tìm một phiên bản sớm nhất sao cho ts của thao tác đọc ts(R i ) >
ts(phiên bản)

 Thao tác ghi Wi : tương tự thao tác đọc nhưng phải kiểm tra phiên bản đó đã
được đọc bởi 1 Tj nào khác mà ts(Tj) > ts(Wi) chưa, nếu tồn tại Tj thì thao tác bị
hủy bỏ (hủy bỏ vì nếu ko Wi sẽ tạo 1 phiên bản mới là xw dẫn đến Rj đáng ra nên
đọc phiên bản xw thay vì xk , làm sai lệch tuần tự )

You might also like