Lịch biểu có thứ tự, không có thứ tự và lịch biểu có thứ tự xung đột

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Quản lý giao tác trong CSDL quan hệ và phân tán (Trang 32 - 37)

CHƢƠNG 1 : GIỚI THIỆU VỀ XỬ LÝ GIAO TÁC

1.5 Thứ tự của lịch biểu

1.5.1 Lịch biểu có thứ tự, không có thứ tự và lịch biểu có thứ tự xung đột

đột

Lịch biểu A và B trong hình 1.5(a) và 1.5(b) được gọi là theo thứ tự bởi vì các thao tác của mỗi giao tác được thực hiện một cách liên tiếp mà không có các thao tác xen kẽ của các giao tác khác. Trong một lịch biểu có thứ tự, các giao tác nguyên vẹn được thực hiện theo một trật tự : T1 rồi đến T2 trong hình 4.5(a) và T2 rồi đến T1 trong hình 1.5(b) .Các lịch biểu C và D trong hình 1.5(c) được gọi là không theo thứ tự bởi vì có sự xen kẽ thao tác từ 2 giao tác

Một cách hình thức, một lịch biểu S là theo thứ tự nếu đối với mỗi giao tác T tham gia trong lịch biểu, toàn bộ thao tác của T được thực hiện một cách liên tiếp trong lịch biểu, ngược lại thì lịch biểu được coi là không theo thứ tự. Do đó, trong một lịch biểu theo thứ tự tại một thời điểm chỉ một giao tác hoạt động – việc xác nhận (hoặc huỷ bỏ) của một giao tác hoạt động khởi tạo việc thực hiện giao tác kế tiếp. Không có sự xen kẽ xẩy ra trong một lịch biểu theo thứ tự. Chúng ta có thể có một giả thiết hợp lý là mỗi một lịch biểu có thứ tự được xem là đúng đắn, nếu ta xem các giao tác là độc lập. Chúng ta có thể giả thiết như vậy bởi vì mỗi giao tác được giả thiết là đúng đắn nếu được thực hiện trên chính nó. Chừng nào mỗi giao tác được thực hiện từ đầu đến cuối mà không có sự xen kẽ từ các thao tác của giao tác khác, chúng ta nhận được một kết quả cuối cùng chính xác trên cơ sở dữ liệu. Vấn đề với các lịch biểu có thứ tự là chúng hạn chế tính đồng thời hoặc xen kẽ của các giao tác. Trong một lịch biểu theo thứ tự, nếu một giao tác chờ một thao tác I/O hoàn thành, thì chúng ta không thể chuyển bộ xử lý sang giao tác khác, do đó lãng phí thời gian xử lý CPU. Thêm vào đó, nếu giao tác T khá dài, các giao tác khác phải đợi T hoàn thành tất cả các hoạt động của nó trước khi bắt đầu. Do đó các lịch biểu theo thứ tự được xem không chấp nhận được trong thực tế [1].

Để minh hoạ, xét các lịch biểu trong hình 1.5 và giả sử các giá trị ban đầu của các mục cơ sở dữ liệu là X=90, Y=90 và N=3, M=2. Sau khi thực thi các giao tác T1 và T2 , chúng ta hy vọng giá trị cơ sở dữ liệu là X=89 và Y=93 theo ý nghĩa của các giao tác. Chắc chắn là việc thực hiện lịch biểu theo thứ tự A hoặc B đều đưa ra các kết quả đúng đắn. Xét các lịch biểu không theo thứ tự C và D ở hình 1.5 Lịch biểu C sẽ đưa ra kết quả X=92 và Y=93, trong đó X là không đúng, trong khi đó lịch biểu D đưa ra kết quả đúng.

Lịch biểu C đưa ra kết quả không đúng vì vấn đề cập nhật bị mất. Giao tác T2 đọc giá trị của X trước khi giá trị này được thay đổi bởi giao tác T1, do

đó chỉ ảnh hưởng của T2 lên X được phản ánh trong cơ sở dữ liệu. Ảnh hưởng của T1 trên X bị mất, bị T2 viết đè lên, dẫn tới kết quả không chính xác cho mục X. Tuy nhiên, một số lịch biểu không theo thứ tự vẫn đưa ra kết quả đúng, như lịch biểu D. Chúng ta muốn xác định các lịch biểu không thứ tự nào luôn luôn cho kết quả đúng và lịch biểu nào có thể cho kết quả sai. Khái niệm được sử dụng để mô tả đặc trưng các lịch biểu theo cách này là sự sắp thứ tự được của một lịch biểu.

Một lịch biểu S của n giao tác là sắp thứ tự được nếu nó tương đương với một lịch biểu có thứ tự của cùng n giao tác đó. Chúng ta sẽ định nghĩa sự tương đương của các lịch biểu ngay sau đây. Để ý rằng có n! lịch biểu có thứ tự có thể có của n giao tác và có nhiều hơn nhiều các lịch biểu không có thứ tự. Chúng ta có thể tạo ra hai nhóm các lịch biểu không thứ tự: những lịch biểu tương đương với một (hoặc nhiều) lịch biểu có thứ tự và như vậy là có thể sắp thứ tự được, và những lịch biểu không tương đương với một lịch biểu có thứ tự nào và như vậy là không sắp thứ tự được [2].

Nói rằng một lịch biểu không thứ tự S là sắp thứ tự được là tương đương với việc nói rằng nó là đúng, bởi vì nó tương đương với một lịch biểu có thứ tự được xem là đúng. Câu hỏi còn lại là: Khi nào hai lịch biểu được xem là tương đương?. Có nhiều cách để định nghĩa tính tương đương của lịch biểu. Cách đơn giản nhất, nhưng ít thoả mãn nhất là định nghĩa tính tương đương lịch biểu bao hàm việc so sánh ảnh hưỏng của các lịch biểu lên cơ sở dữ liệu. Hai lịch biểu được gọi là tương đương kết quả nếu chúng đưa ra cùng trạng thái cuối cùng của một cơ sở dữ liệu [1,2].

Tuy nhiên, hai lịch biểu khác nhau có thể ngẫu nhiên đưa ra trạng thái cuối cùng như nhau.Ví dụ trong hình 1.6 các lịch biểu S1 và S2 sẽ đưa ra trạng thái cơ sở dữ liệu cuối cùng là như nhau nếu chúng thực thi trên một cơ sở dữ liệu với một giá trị khởi tạo X=100; nhưng đối với các giá trị khởi tạo khác

của X, các lịch biểu này không phải là tương đương kết quả. Hơn nữa, các lịch biểu này thực hiện các giao tác khác nhau, do đó chúng không nên được xem là tương đương. Như vậy, chỉ riêng tính tương đương kết quả không thể được sử dụng để định nghĩa sự tương đương của các lịch biểu.

S1 S2 Read(X); Read(X); X:=X+10; X:=X*1.1; Write(X); Write(X);

Hình 1.6 Hai lịch biểu là tương đương kết quả đối với giá trị khởi tạo của X=100 nhưng thực tế chúng không phải tương đương kết quả

Cách tiếp cận an toàn nhất và phổ biến nhất để định nghĩa tính tương lịch biểu là không đưa ra bất kỳ giả thiết nào về các kiểu của các thao tác bao hàm trong các giao tác. Đối với 2 lịch biểu là tương đương, thì các thao tác áp dụng cho mỗi mục dữ liệu được ảnh hưởng bởi các lịch biểu sẽ được áp dụng cho các mục đó trong cả hai lịch biểu trong cùng một thứ tự. Hai định nghĩa tính tương đương của lịch biểu thường được sử dụng là: tương đương xung đột và tương đương khung nhìn. Tính tương đương xung đột được sử dụng phổ biến hơn [1].

Hai lịch biểu được xem như là tương đương xung đột nếu thứ tự của 2 thao tác xung đột bất kỳ là như nhau trong cả hai lịch biểu. Nếu hai thao tác xung đột được áp dụng trong các trật tự khác nhau trong 2 lịch biểu thì ảnh hưởng có thể khác nhau trên cơ sở dữ liệu hoặc trên các giao tác khác trong lịch biểu, và do đó các lịch biểu là không tương đương xung đột. Ví dụ, nếu một thao tác đọc và ghi xẩy ra theo theo thứ tự r1(X), w2(X) trong lịch biểu S1 và theo thứ tự ngược lại w2(X), r1(X) trong lịch biểu S2, thì giá trị do thao tác r1(X) có thể khác nhau trong hai lịch biểu. Một cách tương tự, nếu hai thao tác ghi xuất hiện theo thứ tự w1(X), w2(X) trong S1 và theo thứ tự ngược lại

w2(X), w1(X) trong S2 thì thao tác r(X) tiếp theo trong 2 lịch biểu sẽ đọc các giá trị khác nhau; hoặc nếu chúng là các thao tác cuối cùng ghi mục X trong các lịch biểu thì giá trị cuối cùng của mục X trong cơ sở dữ liệu sẽ khác nhau. Sử dụng khái niệm tương đương xung đột, chúng ta định nghĩa một lịch biểu S là sắp thứ tự được xung đột nếu nó là tương đương (xung đột) với một lịch biểu có thứ tự S’ nào đó. Trong trường hợp như vậy, chúng ta có thể sắp xếp thứ tự lại các thao tác không xung đột trong S cho đến khi tạo được một lịch biểu theo thứ tự tương đương S’. Theo định nghĩa này , lịch biểu D của hình 1.5(c) là tương đương với lịch biểu theo thứ tự A của hình 1.5(a). Trong cả 2 lịch biểu, read_item(X) của T2 đọc giá trị của X được ghi bởi T1, trong khi đó các thao tác read_item khác đọc các giá trị cơ sở dữ liệu từ trạng thái cơ sở dữ liệu ban đầu. Thêm và đó, T1 là giao tác cuối cùng để ghi Y và T2 là giao tác cuối cùng để ghi X trong cả hai lịch biểu. Bởi vì A là lịch biểu theo thứ tự và lịch biểu D là tương đương với A, D là một lịch biểu sắp thứ tự được. Chú ý rằng các thao tác r1(Y) và w1(Y) của lịch biểu D không xung đột với các thao tác r2(X) và w2(X) vì chúng truy cập đến các mục dữ liệu khác nhau. Do đó, có thể chuyển r1(Y), w1(Y) ra trước r2(X), w2(X) dẫn đến lịch biểu theo thứ tự tương đương T1,T2 [1].

Lịch biểu C của hình 1.5(c) là không tương đương với cả hai lịch biểu theo thứ tự A và B do đó nó là không sắp thứ tự được. Việc cố gắng sắp xếp lại thứ tự của các thao tác của lịch biểu C để tìm ra một lịch biểu có thứ tự tương đương là thất bại, bởi vì r2(X) và w1(X) xung đột nghĩa là không thể chuyển r2(X) xuống để được một lịch biểu theo thứ tự tương đương T1,T2. Một cách tương tự, bởi vì w1(X) và w2(X) xung đột , nên không thể chuyển r2(X) xuống để nhận được một lịch biểu theo thứ tự tương đương T1,T2. Tương tự, vì w1(X) và w2(X) là xung đột, chúng ta không thể chuyển w1(X) xuống để nhận được lịch biểu có thứ tự tương đương T2, T1

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Quản lý giao tác trong CSDL quan hệ và phân tán (Trang 32 - 37)

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

(96 trang)