TRƯỜNG ĐẠI HỌC CẦN THƠ TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BỘ MÔN CÔNG NGHỆ THÔNG TIN QUẢN TRỊ DỮ LIỆU - CT467 Chương 4: ĐIỀU KHIỂN CẠNH TRANH Biên soạn: Ths. Nguyễn Thị Kim Yến Ntkyen@ctu.vn NỘI DUNG 1 Kỹ thuật khóa (chốt) 2 Kỹ thuật nhãn (tem) thời gian 3 Giao thức dựa trên tính hợp lệ 4 Quản lý deadlock 6 1 GIỚI THIỆU Trong chương trước, ta đã có các giải thuật để xác định một lịch trình có khả tuần tự hay không. Nhưng làm thế nào để sinh ra được các lịch trình khả tuần tự? T1 T2 …. Tn Scheduler Các giao thức Dựa trên chốt DB Dựa trên tem thời gian Dựa trên tính hợp lệ 2 GIỚI THIỆU (tt) • Các kỹ thuật điều khiển đồng thời: những kỹ thuật cho phép bộ lập lịch (shedule) sử dụng để tạo một lịch trình khả tuần tự n giao dịch thực hiện đồng thời.
Các kỹ thuật Kỹ thuật khóa (chốt) Kỹ thuật nhãn (tem) thời gian Kỹ thuật xác nhận (tính) hợp lệ 3 1. KỸ THUẬT KHÓA (CHỐT) 4 Các loại: 1.2 Khóa 2 giai đoạn 1.3 Khóa đọc ghi (chốt và cấp chốt) 1.5 Khóa đồ thị 5 6 7 8 9 T4 T5 T6 10 11 12 13 S’ Không xin được khóa. Tình trạng “chết đói” (starved) Tình trạng một GD yêu cầu khóa nhưng cứ chờ mãi mà không được cấp 14 Để tránh chết đói, ta có thể dùng giao thức sau: GD Ti chỉ được cấp khóa trên hạng mục dữ liệu Q ở phương thức M, khi cả hai điều kiện sau được thỏa: 1. Không có GD khác giữ khóa không tương thích với M trên Q 2.
Không có GD khác đang chờ khóa trên Q và đã đưa ra yêu cầu cấp khóa trước Ti Một GD sẽ được cấp khóa nếu như không có GD nào giữ khóa ở phương thức không tương thích 15 16 (1.2 Giao thức chốt 2 kỳ) (xin khóa) (kỳ phình to) (trả khóa) (kỳ thu nhỏ) 17 (tt ) (giao tác đúng đắn - thao tác hợp lệ) 18 (tt ) Giao dịch nào thỏa nghi thức khóa 2 giai đoạn (giao thức chốt 2 kỳ)? 19 (tt ) 20 (tt ) Các lịch trình tuân theo giao thức chốt 2 kỳ: lịch trình khả tuần tự xung đột tuy nhiên, không tránh được deadlock và bị cuộn lại hàng loạt. Giải pháp: tránh cuộn lại hàng loạt là thêm ràng buộc • Giao thức chốt 2 kỳ nghiêm ngặt: tất cả các chốt X phải được trả ở cuối giao dịch • Giao thức chốt 2 kỳ nghiêm khắc: tất cả các chốt phải được trả ở cuối giao dịch.3 Chốt và cấp chốt) Dựa trên sự loại trừ hỗ tương: khi 1 GD đang truy xuất một hạng mục DL, không một GD nào khác được truy xuất hạng mục DL này. hay Lock_S(A) hoặc L_S(A) hay Lock_X(A) hoặc L_X(A) 22 hay Lock_X(A) hay L_X(A) hoặc LX(A) hay Lock_S(A) hay L_S(A) hoặc LS(A) 23 hay Lock_X(A) hay L_X(A) hoặc LX(A) hay Lock_S(A) hay L_S(A) hoặc LS(A) Tháo chốt sớm: cạnh tranh vs. không nhất quán.
Tháo chốt trễ: nhất quán vs. ít cạnh tranh + deadlock. Display (A1+A2) 6 L_S(A4) Read(An) 7 Unlock(A1) Write(A1) Nâng cấp 8 Unlock(A2) 9 L_S(An) 10 Upgrade(A1) 11 Wite(A1) 32 Kỹ thuật khóa - Đồ thị (1.4 Giao thức dựa trên đồ thị) Có thể thực hiện nếu biết trước thứ tự mà các hạng mục DL được truy xuất. Xem như đồ thị có hướng phi chu trình ⇒ Đồ thị CSDL Tính chất: A LT hợp lệ GT cây khả tuần tự xung đột B C Tránh deadlock và cuộn lại hàng loạt Chỉ sử dụng chốt Lock_X.
D A B có nghĩa là nếu GD nào truy xuất cả A và B phải truy E F xuất A trước B 33 Kỹ thuật khóa - Đồ thị (tt) Quy tắc: (1) Mỗi hạng mục có thể chốt nhiều nhất 1 lần (2) Chốt đầu tiên bởi T có thể trên bất kỳ hạng mục DL nào (3) Sau đó, Q có thể được chốt bởi T nếu T đã chốt cha Q (4) Các hạng mục DL có thể tháo chốt bất kỳ lúc nào Giao thức này có thuận lợi hơn GT chốt 2 kỳ là ta có thể tháo chốt sớm nhưng có hạn chế là phải chốt các hạng mục DL không truy xuất (3) lãng phí khóa, tăng thời gian chờ Có những GD thỏa giao thức cây nhưng không thỏa giao thức chốt 2 kỳ và ngược lại. 34 Kỹ thuật khóa - Đồ thị (tt) Ví dụ: T1 T2 T1 T2 L_X(A) L_X(A) A L_X(B) L_S(B) U(A) L_X(C) L_X(A) U_S(B) B U(A) L_X(C) U(B) L_X(C) L_X(B) 2PL, !Tree C U(A) U(B) U(C) Tree, !2PL 35 Kỹ thuật khóa - Đồ thị (tt) (Giao thức dựa trên đồ thị) Cây CSDL: Chỉ thị xin/tháo khóa của GD được trình bày: A • T10: L_X(D); L_X(G); U(D); U(G) • T11: L_X(B); L_X(E); U(B); U(E) B C T10 T11 D E F L_X(B) L_X(D) L_X(G) G H I L_X(E) U(D) J U(B) U(E) U(G) Lịch trình khả tuần tự dưới giao thức cây 36 Kỹ thuật khóa - Đồ thị (tt) (Giao thức dựa trên đồ thị) Bài tập: Cho đồ thị CSDL như sau và hai giao dịch T1 và T2: A T1: Truy xuất B, E, I. B C 1) Viết các chỉ thị xin/tháo khóa cho các giao dịch trên theo đúng D E F giao thức cây. G H I 2) Tạo một lịch trình cho 2 giao dịch trên và cho biết lịch trình này có bị deadlock J hay không? 37 (Multiple Granularity) (1.5 Đa hạt) Xét ví dụ hệ thống ngân hàng • Quan hệ TaiKhoan (maTK, soDu) • Giao tác gửi tiền và rút tiền Khóa Relation: • Các giao tác thay đổi giá trị của số dư của 1 tài khoản X sẽ yêu cầu khóa độc quyền • Vì khóa ở mức độ quan hệ nên toàn bộ bảng bị khóa • Các giao tác khác muốn truy cập tài khoản Y (Y khác X) cũng phải chờ → vô lý, tốc độ xử lý đồng thời chậm 38 Khóa tuple hay disk block: • 2 tài khoản ở 2 blocks khác nhau có thể được cập nhật cùng thời điểm • Xử lý đồng thời nhanh Nên chốt những đối tượng lớn hay nhỏ? • Nếu chốt đối tượng lớn (bảng, DB): cần ít khóa nhưng ít cạnh tranh • Nếu chốt đối tượng nhỏ (tuple): cho phí chốt cao nhưng tăng tính cạnh tranh 39 Hạt ở đây có nghĩa là đơn vị cấp chốt 40 Hệ thống hỗ trợ nhiều đơn vị cấp chốt hay nhiều mức hạt khác nhau: 41 Gồm các khóa: Khóa thông thường (khóa tường minh): • Shared lock: S • Exclusive lock: X Khóa cảnh báo (khóa tăng cường): • Warning (intensive) shared lock: IS cho khóa chia sẻ S.
Khi 1 nút được khóa ở phương thức chia sẻ S, thì khóa IS nó cũng sẽ hiện diện trên tất cả các nút tổ tiên. • Warning (intensive) exclusive lock: IX cho khóa loại trừ X • Shared intensive exclusive: SIX kết hợp của khóa S và IX 42 43 44 45 Qui tắc cấp chốt: 1. Kiểm chứng hàm tương thích 2. Gốc của cây phải được chốt đầu tiên 3.
Q có thể chốt bởi T ở {S, IS} nếu cha Q đang bị chốt bởi T ở {IS, IX} 4. Q có thể chốt bởi T ở {X, SIX, IX} nếu cha Q đang bị chốt bởi T ở {IX, SIX} 5. T tuân theo giao thức chốt 2 kỳ 6. T có thể tháo chốt Q nếu không có con của Q đang bị chốt bởi T ⇒ Tậu chốt: Top-Down, tháo chốt: Bottom-Up 46 • T18: r(Ra2) T20(IS) T21(S) • T19: w(Ra3) T19(IX) T18(IS) • T20: R(Fa) T20(IS) DB • T21: R(DB) T18(IS) A1 A2 T19(IX) T20(S) T18(IS) Fa Fb Fc T19(IX) Ra1 Ra2 Ra3 Rb1 Rb2 Rc1 Rc2 Rc3 T18(S) T19(X) 47 • T19: w(Ra3) T20(IS) T21(S) • T20: R(Fa) • T21: R(DB) T20(IS) DB A1 A2 T19(IX) T20(S) Fa Fb Fc T19(IX) Ra1 Ra2 Ra3 Rb1 Rb2 Rc1 Rc2 Rc3 T19(X) 48 49