Để đả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.
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
T1 T2
92 thời gian, và thứ tự tương đối giữa các nhãn thời gian của các giao dịch cũng chính là thứ tự mà các giao dịch đượ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 bố, 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 > trvà 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 T1, T2 , T3, T4 có các nhãn thời gian lần lượt là 100, 200, 300, 400.
ở bước (1) , 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.
93 ở 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) , T1 (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ỏ.
TT T1 T2 T3 T4 A B C 100 200 300 400 RT=0 WT=0 RT=0 WT=0 RT=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 T1 bị huỷ bỏ
Trong quá trình thực hiện giao dịch CSDL có thể tạm thời không nhất quán nhưng CSDL phải nhất quán khi giao dịch kết thúc. Tính tin cậy dựa vào hai khả năng sau:
+ Khả năng phục hồi nhanh của hệ thống khi nhiều kiểu lỗi xảy ra (Khi các lỗi xảy ra hệ thống có thể chịu đựng được và có thể tiếp tục cung cấp các dịch vụ ).
+ Khôi phục: đạt được trạng thái nhất quán. Trở về trạng thái nhất quán trước đó hoặc tiếp tới trạng thái nhất quán mới sau khi xảy ra lỗi. Nhất quán về giao tác liên quan tới sự thực hiện các truy nhập trùng nhau.
Việc quản lý giao tác tiếp xúc với các vấn đề luôn giữ CSDL trong trạng thái nhất quán khi xảy ra các truy nhập trùng nhau và các lỗi.