Hệ quản trị cơ sở dữ liệu - Chương 5: Điều khiển cạnh tranh
Một trong các tính chất cơbản của một giao dịch là tính cô lập. Khi một vài giao dịch thực
hiện một cách cạnh tranh trong CSDL, tính cô lập có thểkhông được bảo tồn. Đối với hệthống,
cần phải điều khiển sựtrao đổi giữa các giao dịch cạnh tranh; sự điều khiển này được thực hiện
thông qua một trong tập hợp đa dạng các cơchế được gọi là sơ đồ điều khiển cạnh tranh.
Các sơ đồ điều khiển cạnh tranh được xét trong chương này được dựa trên tính khảtuần
tự. Trong chương này ta cũng xét sựquản trịcác giao dịch thực hiện cạnh canh nhưng không xét
đến sựcốhỏng hóc.
ầu một hạng mục dữ liệu hiện đang bị giữ bởi Tj , Ti được phép chờ chỉ nếu nó có tem thời gian lớn hơn của Tj , nếu không Tj bị cuộn lại (Wounded). Một điều quan trọng là phải đảm bảo rằng, mỗi khi giao dịch bị cuộn lại, nó không bị chết đói (starvation) có nghĩa là nó sẽ không bị cuộn lại lần nữa và được phép tiến triển. Cả hai sơ đồ Wound-Wait và Wait-Die đều tránh được sự chết đói: tại một thời điểm, có một giao dịch với tem thời gian nhỏ nhất. Giao dịch này không thể bị yêu cầu cuộn lại trong cả hai sơ đồ. Do tem thời gian luôn tăng và do các giao dịch không được gán tem thời gian mới khi chúng bị cuộn lại, một giao dịch bị cuộn lại sẽ có tem thời gian nhỏ nhất (vào thời gian sau) và sẽ không bị cuộn lại lần nữa. Tuy nhiên, có những khác nhau lớn trong cách thức hoạt động của hai sơ đồ: • Trong sơ đồ Wait-Die, một giao dịch già hơn phải chờ một giao dịch trẻ hơn giải phóng hạng mục dữ liệu. Như vậy, giao dịch già hơn có xu hướng bị chờ nhiều hơn. Ngược lại, trong sơ đồ Wound-Wait, một giao dịch già hơn không bao giờ phải chờ một giao dịch trẻ hơn. • Trong sơ đồ Wait-Die, nếu một giao dịch Ti chết và bị cuộn lại vì nó đòi hỏi một hạng mục dữ liệu bị giữ bởi giao dịch Tj , khi đó Ti có thể phải tái phát ra cùng dãy các yêu cầu khi nó khởi động lại. Nếu hạng mục dữ liệu vẫn bị chiếm bởi Tj , Ti bị chết lần nữa. Như vậy, Ti có thể bị chết vài lần trước khi tậu được hạng mục dữ liệu cần thiết. Trong sơ đồ Wound-Wait, Giao dịch Ti bị thương và bị cuộn lại do Tj yêu cầu hạng mục dữ liệu nó chiếm giữ. Khi Ti khởi động lại, và yêu cầu hạng mục dữ liệu, bây giờ, đang bị Tj giữ, Ti chờ. Như vậy, có ít cuộn lại hơn trong sơ đồ Wound-Wait. Một vấn đề nổi trội đối với cả hai sơ đồ là có những cuộn lại không cần thiết vẫn xảy ra. CHƯƠNG V ĐIỀU KHIỂN CẠNH TRANH Trang 113 HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU V.4.2. SƠ ĐỒ DỰA TRÊN TIMEOUT Một cách tiếp cận khác để quản lý deadlock được dựa trên lock timeout. Trong cách tiếp cận này, một giao dịch đã yêu cầu một chốt phải chờ nhiều nhất một khoảng thời gian xác định. Nếu chốt không được cấp trong khoảng thời gian này, giao dịch được gọi là mãn kỳ (time out), giao dịch tự cuộn lại và khởi động lại. Nếu có một deadlock, một hoặc một vài giao dịch dính líu đến deadlock sẽ time out và cuộn lại, để các giao dịch khác tiến triển. Sơ đồ này nằm trung gian giữa phòng ngừa deadlock và phát hiện và khôi phục deadlock. Sơ đồ timeout dễ thực thi và hoạt động tốt nếu giao dịch ngắn và nếu sự chờ đợi lâu là do deadlock. Tuy nhiên, khó quyết định được khoảng thời gian timeout. Sơ đồ này cũng có thể đưa đến sự chết đói. V.4.3. PHÁT HIỆN DEADLOCK VÀ KHÔI PHỤC Nếu một hệ thống không dùng giao thức phòng ngừa deadlock, khi đó sơ đồ phát hiện và khôi phục phải được sử dụng. Một giải thuật kiểm tra trạng thái của hệ thống được gọi theo một chu kỳ để xác định xem deadlock có xẩy ra hay không. Nếu có, hệ thống phải khôi phục lại từ deadlock, muốn vậy hệ thống phải: • Duy trì thông tin về sự cấp phát hiện hành các hạng mục dữ liệu cho các giao dịch cũng như các yêu cầu hạng mục dữ liệu chưa được chưa được giải quyết. • Cung cấp một thuật toán sử dụng các thông tin này để xác định hệ thống đã đi vào trạng thái deadlock chưa. • Phục hồi từ deadlock khi phát hiện được deadlock đã xảy ra. V.4.3.1 PHÁT HIỆN DEADLOCK Deadlock có thể mô tả chính xác bằng đồ thị định hướng được gọi là đồ thị chờ (wait for graph). Đồ thị này gồm một cặp G = , trong đó V là tập các đỉnh và E là tập các cung. Tập các đỉnh gồm tất cả các giao dịch trong hệ thống. Mỗi phần tử của E là một cặp Ti → Tj , nó chỉ ra rằng Ti chờ Tj giải phóng một hạng mục dữ liệu nó cần. Khi giao dịch Ti yêu cầu một hạng mục dữ liệu đang bị giữ bởi giao dịch Tj khi đó cung Ti → Tj được xen vào đồ thị. Cạnh này bị xoá đi chỉ khi giao dịch Tj không còn giữ hạng mục dữ liệu nào mà Ti cần. Deadlock tồn tại trong hệ thống nếu và chỉ nếu đồ thị chờ chứa một chu trình. Mỗi giao dịch tham gia vào chu trình này được gọi là bị deadlock. Để phát hiện deadlock, hệ thống phải duy trì đồ thị chờ và gọi theo một chu kỳ thủ tục tìm kiếm chu trình. Ta xét ví dụ sau: T26 T28 T25 T27 Đồ thị chờ (phi chu trình) figure V- 19 CHƯƠNG V ĐIỀU KHIỂN CẠNH TRANH Trang 114 HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Do đồ thị không có chu trình nên hệ thông không trong trạng thái deadlock. Bây giờ, giả sử T28 yêu cầu một hạng mục dữ liệu được giữ bởi T27 , cung T28 → T27 được xen vào đồ thị, điều này dẫn đến tồn tại một chu trình T26 → T27 → T28 → T26 có nghĩa là hệ thống rơi vào tình trạng deadlock và T26 , T27 , T28 bị deadlock. T26 T28 T25 T27 figure V- 20 Vấn đề đặt ra là khi nào thì chạy thủ tục phát hiện ? câu trả lời phụ thuộc hai yêu tố sau: 1. Deadlock thường xảy ra hay không ? 2. Bao nhiêu giao dịch sẽ bị ảnh hưởng bởi deadlock Nếu deadlock thường xảy ra, việc chạy thủ tục phát hiện diễn ra thường xuyên hơn. Các hạng mục dữ liệu được cấp cho các giao dịch bị deadlock sẽ không sẵn dùng cho các giao dịch khác đến khi deadlock bị phá vỡ. Hơn nữa, số chu trình trong đồ thị có thể tăng lên. Trong trường hợp xấu nhất, ta phải gọi thủ tục phát hiện mỗi khi có một yêu cầu cấp phát không được cấp ngay. V.4.3.2 KHÔI PHỤC TỪ DEADLOCK Khi thuật toán phát hiện xác định được sự tồn tại của deadlock, hệ thống phải khôi phục từ deadlock. Giải pháp chung nhất là cuộn lại một vài giao dịch để phá vỡ deadlock. Ba việc cần phải làm là: 1. Chọn nạn nhân. Đã cho một tập các giao dịch bị deadlock, ta phải xác định giao dịch nào phải cuộn lại để phá vỡ deadlock. Ta sẽ cuộn lại các giao dịch sao cho giá phải trả là tối thiểu. Nhiều nhân tố xác định giá của cuộn lại: a. Giao dịch đã tính toán được bao lâu và bao lâu nữa. b. Giao dịch đã sử dụng bao nhiêu hạng mục dữ liệu c. Giao dịch cần bao nhiêu hạng mục dữ liệu nữa để hoàn tất. d. Bao nhiêu giao dịch bị cuộn lại. 2. Cuộn lại (Rollback). Mỗi khi ta đã quyết định được giao dịch nào phải bị cuộn lại, ta phải xác định giao dịch này bị cuộn lại bao xa. Giải pháp đơn giản nhất là cuộn lại toàn bộ: bỏ dở giao dịch và bắt đầu lại nó. Tuy nhiên, sẽ là hiệu quả hơn nếu chỉ cuộn lại giao dịch đủ xa như cần thiết để phá vỡ deadlock. Nhưng phương pháp này đòi hỏi hệ thống phải duy trì các thông tin bổ xung về trạng thái của tất cả các giao dịch đang chạy. 3. Sự chết đói (Starvation). Trong một hệ thống trong đó việc chọn nạn nhân dựa trên các nhân tố giá, có thể xảy ra là một giao dịch luôn là nạn nhân của việc chọn này và kết quả là giao dịch này không bao giờ có thể hoàn thành. Tình huống này được gọi là sự chết đói. Phải đảm bảo việc chọn nạn nhân không đưa đến chết đói. Một giải pháp xem số lần bị cuộn lại của một giao dịch như một nhân tố về giá. CHƯƠNG V ĐIỀU KHIỂN CẠNH TRANH Trang 115 HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU V.5. BÀI TẬP CHƯƠNG V V.1 Chứng tỏ rằng giao thức chốt hai kỳ đảm bảo tính khả tuần tự xung đột và các giao dịch có thể được làm tuần tự tương ứng với các điểm chốt của chúng. V.2 Xét hai giao dịch sau: T31 : Read(A); Read(B); If A=0 then B:=B+1; Write(B); T32 : Read(B); Read(A); If B=0 then A:=A+1; Write(A); Thêm các chỉ thị chốt và tháo chốt vào hai giao dịch T31 và T32 sao cho chúng tuân theo giao thức chốt hai kỳ. Sự thực hiện các giao dịch này có thể dẫn đến deadlock ? V.3 Nêu các ưu điểm và nhược điểm của giao thức chốt hai kỳ nghiêm ngặt. V.4 Nêu các ưu điểm và nhược điểm của giao thức chốt hai kỳ nghiêm khắc. V.5 Bộ quản trị điều khiển cạnh tranh của một hệ CSDL phải quyết định cấp cho một đòi hỏi chốt hoặc bắt giao dịch yêu cầu phải chờ. Hãy thiết kế một cấu trúc dữ liệu (tiết kiệm không gian) cho phép bộ quản trị điều khiển cạnh tranh cho ra quyết định mau chóng. V.6 Xét sự mở rộng thành giao thức cây-chốt sau. Nó cho phép cả chốt shared và exclusive: 1. Một giao dịch chỉ đọc chỉ có thể yêu cầu các chốt shared. Một giao dịch cập nhật chỉ có thể yêu cầu các chốt exclusive 2. Mỗi giao dịch phải tuân theo các quy tắc của giao thức cây-chốt. Các giao dịch chỉ đọc đầu tiên có thể chốt bất kỳ hạng mục dữ liệu nào, các giao dịch cập nhật đầu tiên phải chốt gốc. Chứng tỏ giao thức đảm bảo tính khả tuần tự và không có deadlock V.7 Cho ra ví dụ về các lịch trình có thể dưới giao thức cây nhưng không thể dưới giao thức chốt hai kỳ và ngược lại. V.8 Xét một biến thể của giao thức cây, được gọi là giao thức rừng. CSDL được tổ chức như một rừng. Mỗi giao dịch T phải tuân theo các quy tắc sau: 1. Chốt đầu tiên trong mỗi cây có thể trên bất kỳ hạng mục dữ liệu nào 2. Chốt từ thứ hai trở về sau có thể được yêu cầu chỉ nếu cha của nút được yêu cầu hiện đang bị chốt 3. Các hạng mục dữ liệu có thể được tháo chốt bất kỳ lúc nào 4. Một hạng mục dữ liệu không được chốt lại bởi T sau khi T đã tháo chốt cho nó Chứng tỏ giao thức rừng không đảm bảo tính khả tuần tự CHƯƠNG V ĐIỀU KHIỂN CẠNH TRANH Trang 116 HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU V.9 Khi một giao dịch bị cuộn lại dưới thứ tự tem thời gian, nó được gán một tem thời gian mới. Tại sao không đơn giản để nó giữ lại tem thời gian cũ ? V.10 Trong chốt đa hạt, sự khác nhau giữa chốt tường minh và chốt ẩn là gì ? V.11 phương thức chốt SIX là hữu dụng trong chốt đa hạt. Phương thức exclusive và shared tăng cường không được sử dụng. Tại sao nó lại vô dụng ? V.12 Đối với mỗi một trong các giao thức sau, mô tả sắc thái ứng dụng thực tế gợi ý sử dụng giao thức và sắc thái gợi ý không nên sử dụng giao thức: 1. Chốt hai kỳ 2. Chốt hai kỳ với chốt đa hạt 3. Giao thức cây 4. Thứ tự tem thời gian 5. Hợp lệ 6. Thứ tự tem thời gian đa phiên bản 7. Chốt hai kỳ đa phiên bản V.13 Chứng tỏ rằng có những lịch trình là có thể dưới giao thức chốt hai kỳ nhưng không thể dưới giao thức tem thời gian và ngược lại. V.14 Với điều kiện nào tránh deadlock ít đắt giá hơn cho phép deadlock rồi phát hiện? CHƯƠNG V ĐIỀU KHIỂN CẠNH TRANH Trang 117
File đính kèm:
- HQT_CSDL_chuong5.pdf