Lịch biểu của các giao tác

Một phần của tài liệu Quản lý giao tác trong CSDL quan hệ và phân tán (Trang 25)

Một lịch biểu (hoặc lịch sử) S của n giao tác T1, T2, …,Tn là một thứ tự của các thao tác của các giao tác chịu ràng buộc rằng với mỗi giao tác Ti tham gia trong S, các thao tác của Ti trong S phải xuất hiện theo thứ tự như chúng xuất hiện trong Ti. Tuy nhiên, để ý rằng các thao tác từ các Tj khác có thể

được đan xen với các thao tác của Ti trong S. Lúc này, ta xem thứ tự của các thao tác trong S là có thứ tự hoàn toàn mặc dù về mặt lý thuyết có thể làm việc với các lịch biểu mà các thao tác của nó tạo nên các thứ tự từng phần [1]. Với mục đích khôi phục và kiểm soát đồng thời, chúng ta quan tâm chính đến các thao tác read-item và write-item của các giao tác cũng như các thao tác commit và abort. Để mô tả ngắn gọn một lịch biểu ta sử dụng các ký hiệu r, w, c và a cho các thao tác read-item, write-item, commit và abort một cách tương ứng và bổ sung các chỉ số định danh giao tác (số giao tác) vào từng thao tác trong lịch biểu. Trong cách ký hiệu này , mục cơ sở dữ liệu X được đọc hoặc viết đi theo các thao tác r và w trong dấu ngoặc đơn “()”. Ví dụ lịch biểu của hình 1.4(a) sau đây gọi là Sa và có thể được viết như sau:

Sa : r1(X); r2(X); w1 (X); r1(Y); w2(X); w1(Y); T1 T2 read_item(X); X := X – N; read_item(X); X:= X + M; Thời gian write_item(X);

read_item(Y);

write_item(X); Y := Y + N;

write_ item(Y);

Hình 1.3(b) ở trên cho tương ứng lịch biểu Sb nếu ta giả thiết rằng giao tác T1 được huỷ bỏ sau khi thao tác read_item(Y) của nó;

Sb: r1(X); w1(X); r2(X); w2(X); r1(Y);a1;

Hai thao tác trong một lịch biểu được gọi là xung đột nếu chúng thoả mãn cả 3 điều kiện sau

(2)Chúng truy cập vào cùng mục dữ liệu X

(3)Ít nhất một trong các thao tác là write_item(X)

Ví dụ, trong lịch biểu Sa, các thao tác r1(X) và w2(X) là xung đột , tương tự các thao tác r2(X ) với w1(X) và w1(X) với w2(X) là xung đột. Tuy nhiên, các thao tác r1(X) và r2(X ) không xung đột bởi vì chúng đều là các thao tác đọc ; các thao tác w2 (X) và w1(Y) không xung đột bởi vì chúng thao tác trên các mục dữ liệu phân biệt X và Y ; và các thao tác r1(X) và w1(X) không xung đột bởi vì chúng thuộc cùng một giao tác

Một lịch biểu S của n giao tác T1,T2, …..,Tn được gọi là một lịch biểu đầy đủ nếu các điều kiện sau đây được đảm bảo [1]:

1. Các thao tác trong S chính xác là các thao tác trong T1,T2, …..,Tn kể cả một giao tác chấp nhận hay huỷ bỏ như là thao tác cuối cùng đối với mỗi giao tác trong lịch biểu

2. Đối với bất kỳ cặp thao tác từ cùng một giao tác Ti thứ tự xuất hiện của chúng trong S giống như thứ tự của chúng trong Ti

3. Đối với bất kỳ 2 thao tác xung đột nào, một trong 2 thao tác đó phải xẩy ra trước thao tác còn lại lịch biểu.

Điều kiện (3) cho phép hai thao tác không xung đột xuất hiện trong lịch biểu mà không cần xác định cái nào xuất hiện trước, điều đó đưa đến định nghĩa lịch biểu như là một thứ tự từng phần của các thao tác trong n giao tác. Tuy nhiên, một thứ tự tổng thể phải được chỉ ra trong lịch biểu đối với mọi cặp thao tác xung đột (điều kiện 3) và với mọi cặp thao tác từ cùng một giao tác (điều kiện 2). Điều kiện 1 tuyên bố một cách đơn giản rằng mọi thao tác trong các giao tác phải xuất hiện trong một lịch biểu đầy đủ. Bởi vì mỗi giao tác hoặc là được xác nhận (commited) hoặc là bị huỷ bỏ (aborted), một lịch biểu đầy đủ sẽ không chứa giao tác hoạt động nào ở cuối lịch biểu.

Nói chung, khó gặp các lịch biểu đầy đủ trong một hệ thống xử lý giao tác , bởi vì các giao tác mới đang tiếp tục được đệ trình với hệ thống. Vì vậy, cần định nghĩa khái niệm phép chiếu được xác nhận (commited projection) C(S) của một lịch biểu S, nó chỉ bao gồm các thao tác trong S thuộc về các giao tác đã được xác nhận- nghĩa là các giao tác Ti mà thao tác xác nhận ci của nó là ở trong S.

Một phần của tài liệu Quản lý giao tác trong CSDL quan hệ và phân tán (Trang 25)

Tải bản đầy đủ (PDF)

(96 trang)