Miêu tả đặc tính các lịch biểu dựa trên việc khôi phục

Một phần của tài liệu Xử lý truy vấn và quản lý giao tác trong cơ sở dữ liệu (Trang 67 - 69)

Đối với một vài lịch biểu thì việc phục hồi sau những lỗi của giao tác là dễ, tuy nhiên đối với những lịch biểu khác việc xử lý phục hồi gặp nhiều rắc rối. Do vậy, việc phân loại lịch biểu để phục hồi là rất quan trọng.

Giao tác T đƣợc cam kết thì nó không cần khôi phục. Trong lịch biểu S có hai giao tác là T‟ và T thì lịch biểu S có thể phục hồi nếu giao tác T chƣa cam kết cho đến khi tất cả các thao tác của giao tác T‟ đƣợc cam kết, và thao tác “Read” của T đọc dữ liệu từ T‟ đƣợc cam kết. Hơn nữa, T‟ không bị huỷ bỏ trƣớc khi T đọc khoản mục X và không có một giao tác nào ghi X xen giữa T và T‟ (trừ khi những giao tác đã huỷ bỏ T trƣớc khi đọc X).

Lịch biểu có thể phải phục hồi do quá trình xử lý xen kẽ, nhƣng nếu thông tin đƣợc lƣu đủ trong file log thì thuật toán phục hồi có thể đƣợc đƣa ra. Lịch biểu Sa và Sb ở trên đều có thể phục hồi vì chúng thoả mãn điều kiện trên. Lịch biểu Sa‟ đƣợc đƣa ra dƣới đây giống nhƣ lịch biểu Sa ngoại trừ hai thao tác cam kết đƣợc thêm vào Sa:

Sa‟ có thể phục hồi, thậm chí nó trở nên tồi tệ hơn vì nhiều vấn đề cập nhật không thành công. Tuy nhiên cân nhắc với hai lịch biểu bộ phận Sc và Sd sau:

Sc: r1(X); w1(X), r2(X), r1(Y), w2(X), c2, a1

Sd: r1(X); w1(X); r2(X); r1(Y); w2(X); w1(Y); c1 ; c2. Se: r1(X); r2(X); w1(X); r1(Y); w2(X); w1(Y); a1 ; a2

Sc không thể phục hồi vì T2 đọc X từ T1 và sau đó T2 cam kết trƣớc khi T1 cam kết. Nếu T1 huỷ bỏ sau thao tác c2 trong Sc thì giá trị X mà T2 đọc không còn hợp lệ và T2 phải bị huỷ bỏ sau khi nó đã cam kết, dẫn đến lịch biểu không thể phục hồi. Đối với lịch biểu có thể phục hồi thì thao tác c2 trong Sc phải bị huỷ bỏ đến sau khi T1 cam kết. Nhƣ đã trình bầy ở Sd, nếu T1 huỷ bỏ mặc dù đã cam kết thì sau đó T2 cũng huỷ bỏ nhƣ Se vì giá trị của X mà thao tác “Read” thực hiện cũng không hợp lệ. Trong lịch biểu có thể phục hồi, không có giao tác cam kết phải khôi phục. Tuy nhiên, một số trƣờng hợp có thể xẩy ra vì ở đó giao tác đƣợc cam kết phải đƣợc khôi phục bởi nó đọc khoản mục từ giao tác bị lỗi. Điều này đƣợc minh hoạ ở Se, ở đó giao tác T2 phải đƣợc phục hồi vì nó đọc X từ T1 và sau đó T1 bị huỷ bỏ.

Khôi phục tốn nhiều thời gian do số lƣợng giao tác cần phục hồi. Nếu mỗi giao tác trong lịch biểu chỉ đọc các khoản mục đƣợc ghi bởi giao tác đƣợc cam kết, thì tất cả các khoản mục đƣợc đọc sẽ không bị loại bỏ và không cần phải khôi phục. Để thảo mãn yếu tố này, thao tác r2(x) trong Se bị hoãn đến khi T1 đã cam kết (hoặc bị huỷ bỏ), tuy phải trì hoãn T2 nhƣng sẽ không phải khôi phục nếu T1 hỏng.

Những hạn chế đƣợc đặt ra cho lịch biểu là những giao tác không đƣợc đọc và ghi khoản mục X đến khi thao tác write(X) của giao tác cuối cùng đã cam kết (hoặc huỷ bỏ). Lịch biểu nghiêm ngặt đơn giản hoá xử lý phục hồi. Trong lịch biểu này, quá trình huỷ bỏ thao tác write(X) của giao tác là trả lại giá trị cũ cho cơ sở dữ liệu. Quá trình này luôn thực hiện đối với lịch biểu có thể phục hồi hoặc không xếp thứ tự.

Sf: w1(x,5), w2(x,8),a1

Giả định giá trị ban đầu của X=9 đƣợc lƣu trong hệ thống file log cùng với thao tác w1(x,5). Nếu T1 huỷ bỏ, quá trình phục hồi phải trả lại giá trị cãi=9 trƣớc khi thực hiện thao tác write bị huỷ bỏ, nhƣng nó đã bị đổi thành X=8 bởi giao tác T2, do vậy dẫn đến kết quả không chính xác. Mặc dù lịch biểu Sf là không xếp thứ tự, nó không là lịch biểu nghiêm ngặt vì nó từ chối T2 để ghi X thậm chí giao tác Ti cuối cùng ghi X đã không cam kết (hoặc huỷ bỏ). Lịch biểu xung đột không có vấn đề này.

Một phần của tài liệu Xử lý truy vấn và quản lý giao tác trong cơ sở dữ liệu (Trang 67 - 69)