Thuật toán điêu khiến tương tranh bằng nhãn thời gian

Một phần của tài liệu Giáo trình Cơ sở dữ liệu 2 Phần 1 - ĐH Thái Nguyên (Trang 73)

- Các thuật toán dựa trên nối nửa

4) Tính bền vững

1.5.6. Thuật toán điêu khiến tương tranh bằng nhãn thời gian

Để đảm bảo tính khả tuần tự của các lịch biểu, ngoài các mô hình sử dụng khoá như đã trình bày ở trên. Ta còn sử dụng nhãn thời gian (timestamp). Ý tưởng chính là gán cho mỗi giao dịch một nhãn thời gian, đó chính là điểm bắt đầu của giao dịch [5].

y Thiết lập nhãn thời gian

Nếu tất cả các giao dịch đều được bộ lập lịch gán nhãn thời gian thì bộ lập lịch sẽ duy trì bộ đếm số lượng các giao dịch đã được lập lịch. Khi có một giao dịch mới yêu cầu được lập lịch, bộ lập lịch sẽ tăng bộ đếm số lượng này lên một đơn vị và gán trị số đó cho giao dịch có yêu cầu. Như vậy, không thể xảy ra trường hợp hai giao dịch có cùng nhãn thời gian, và thứ tự tương đối giữa các

thực hiện .

Một cách gán nhãn thời gian khác cho các giao dịch là dùng giá trị của đồng hồ hệ thống tại thời điểm bắt đầu giao dịch.

Trong trường hợp tồn tại nhiều bộ xếp lịch do hệ thống CSDL chạy trên một máy đa bộ xử lý hoặc trong hệ CSDL phân tán, thì ta phải gán thêm một hậu tố duy nhất cho mỗi nhãn thời gian. Hậu tố này chính là định danh của bộ xử lý tương ứng. Khi đó, việc đồng bộ hoá các bộ đếm hoặc đồng hồ được dùng ở mỗi bộ xử lý là một yêu cầu quan trọng để đảm bảo tính khả tuần tự của các lịch biểu.

Đảm bảo tính khả tuần tự bằng nhãn thời gian

Qui tắc duy trì thứ tự tuần tự của nhãn thời gian như sau. Giả sử ta có một giao dịch có nhãn thời gian t đang muốn thực hiện một thao tác X trên một mục có thời điểm đọc tr và thời điểm ghi tw thì:

a/ Cho thực hiện thao tác này nếu: X = Read và t ≥ tw hoặc

X = Write và t ≥ tr và t ≥ tw

Trong trường hợp trước, đặt thời điểm đọc là t nếu t > tr và trong trường hợp sau, đặt thời điểm ghi là t nếu t > tw

b/ Không thực hiện gì nếu X = Write và tr ≤ t < tw

c/ Huỷ bỏ giao dịch này nếu: X = Read và t < tw hoặc X = Write và t < tr

Ví dụ : Trong đó Rlock được xem là Read, Wlock được xem là Write, các bước Unlock không tồn tại. Các giao dịch Tl, T2, T3, T4 có các nhãn thời gian lần lượt là 100, 200, 300, 400.

Ở bước (l) , T2 (có nhãn thời gian là t = 200) đọc A (có WT = 0), tức t > tw. Thao tác này là được phép, và vì t > tr (bằng 0) nên RT của A được đặt lại là 200.

Tương tự ở bước (2) , T3 (có nhãn thời gian là t = 300) đọc A (có WT = 0) tức t > tw Thao tác này là được phép, và vì t > tr (bằng 200) nên RT của A được đặt lại là 300.

Ở bước (3) , T2 (có nhãn thời gian là t = 200) ghi B (có RT = 0 VÀ WT = 0), tức t ≥ tr và t ≥ tw. Thao tác này là được phép, vì t > tw (bằng 0) nên WT của B được đặt lại là 200.

Ở bước (4) , T3 (có nhãn thời gian là t = 300) ghi A (có RT = 300 và WT=0), tức t ≥ tr và t ≥ tw. Thao tác này là được phép, vì t > tw (bằng 0) nên WT

của A được đặt lại là 300.

Ở bước (5) , Tl (có nhãn thời gian là t = 100) đọc B (có WT = 200), tức t < tw Vì vậy thao tác này bị huỷ bỏ.

TI T1 T2 T3 T4 A B C 100 200 300 400 RT=0 RT=0 RT=0 WT=0 WT=0 WT=0 (1) Read A RT=200 (2) Read A RT=300 (3) Write B WT=200 (4) Write A WT=300 (5) Read B Tl bị huỷ bỏ

Một phần của tài liệu Giáo trình Cơ sở dữ liệu 2 Phần 1 - ĐH Thái Nguyên (Trang 73)