Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin
Ng Duc Thuan CSDLPT-Điều khiển tương tranh 1 Chương IV : ĐIỀU KHIỂN TƯƠNG TRANH I. Giao tác (transaction) 1. Khái niệm: Giao tác là một tập hợp các thao tác có thứ tự truy xuất dữ liệu trên CSDL thành một đơn vò công việc logic (xem là một thao tác nguyên tố ), chuyển CSDL từ trạng thái nhất quán này sang trạng thái nhất quán khác. Để ghi nhận sự hoàn tất hay không của một giao tác, người ta sử dụng các lệnh sau: BEGIN TRANSACTION Bắt đầu một giao tác COMMIT TRANSACTION Kết thúc giao tác thành công ROLLBACK TRANSACTION Kết thúc giao tác không thành công, những thao tác làm ảnh hưởng CSDL đã được thực hiện trước đó được undo, CSDL được trả về tình trạng trước khi thực hiện giao tác. END TRANSACTION Chỉ mang ý nghóa hình thức, thường không sử dụng Ví dụ: Cho 2 quan hệ - LOP (Malop, Tenlop, SoSV) - SV (MaSV, TenSV, Malop) Quy đònh: khi thêm một sinh viên vào một lớp thì phải cập nhật lại sỉ số của lớp đó. Ø Giao tác thêm 1 SV vào 1 lớp: BEGIN TRANSACTION Them_SV Insert into SV values(v_masv,v_tensv,v_malop) Update LOP Set SoSV = SoSV + 1 Where Malop = v_malop COMMIT TRANSACTION Them_SV 2. Các tính chất của giao tác: ACID a. Tính nguyên tố (Atomic) - 1 giao tác là 1 đơn vò xử lý không thể chia nhỏ được nữa; hoặc là tất cả các thao tác trong giao tác được thực hiện (được ghi nhận chắc chắn), hoặc là không có thao tác nào được ghi nhận kết quả.(Nếu chia nhỏ giao tác thành các thao tác thì sẽ không đảm bảo tính nhất quán của CSDL.) b. Tính nhất quán (Consistency) - Giao tác chuyển CSDL từ tình trạng nhất quán này sang tình trạng nhất quán khác. c. Tính cô lập (Isolation) - Các giao tác xử lý đồng thời phải độc lập với những thay đổi được thực hiện bởi các giao tác chưa hoàn tất khác (những thay đổi này chưa hình thành nên 1 trạng thái nhất quán của CSDL). d. Tính lâu dài, bền vững (Durability) - Tất cả những thay đổi lên CSDL mà giao tác thực hiện cho đến khi được xác nhận hoàn tất (commit) thì phải được ghi nhận chắc chắn lên CSDL. Ng Duc Thuan CSDLPT-Điều khiển tương tranh 2 II. Các vấn đề của việc truy xuất đồng thời: 1. Mất dữ liệu cập nhật (lost update) Ø Ví dụ: Cho quan hệ HANGHOA (MaHH, TenHH, ĐVT, SLTon) SLTon = 20 Transaction Giá trò T1 (bán hàng) T2 (bán hàng) x1 x2 SLTon Begin Transaction Begin Transaction 20 Read (SLTon) à x1 20 20 Read (SLTon) à x2 20 20 20 x1 – 10 à x1 10 20 20 x2 – 3 à x2 10 17 20 Write x1à SLTon 10 17 10 Write x2à SLTon 10 17 17 Commit T1 Commit T2 17 Ø Lost Update: Thao tác cập nhật của T1 coi như bò mất, không được ghi nhận (do những thay đổi của các giao tác khác ghi đè lên). 2. Đọc dữ liệu chưa commit (uncommitted data) Ø Ví dụ: Cho quan hệ HANGHOA (MaHH, TenHH, ĐVT, SLTon) SLTon = 20 Transaction Giá trò T1 (nhập hàng) T2 (bán hàng) x1 X2 SLTon Begin Transaction 20 Read (SLTon) à x1 20 20 x1 + 100 à x1 120 20 Write x1à SLTon 120 120 Begin Transaction 120 120 Read (SLTon) à x2 120 120 120 x2 – 5 à x2 120 115 120 Write x2à SLTon 120 115 115 Commit T2 120 115 115 Rollback T1 20 Ø Transaction T1 sửa đổi dòng X nhưng chưa commit, Transaction T2 đọc dòng X. Transaction T1 rollback những gì đã thay đổi trên dòng X => dữ liệu mà Transaction T2 đang đọc chưa hề tồn tại. 3. Thao tác đọc không thể lặp lại (unrepeatable data) Ví dụ: Xét 2 giao tác sau: T1 T2 Read(A) Read(A) A=A+10 Print(A) Write(A) Read(A) Print(A) Ng Duc Thuan CSDLPT-Điều khiển tương tranh 3 Giả sử A=20 và 2 giao tác này thực hiện đồng thời theo thứ tự sau: Transaction Giá trò T1 T2 x1 x2 A Begin Transaction 20 Read (A) à x1 20 20 Begin Transaction Read (A) à x2 20 20 20 x1+10 à x1 30 20 20 Print (x2) 30 20 20 Write x1 à A 30 20 30 Read (A) à x2 30 30 30 Commit T2 30 30 30 Commit T1 Ø Khi giao tác T2 đọc nhiều lần trên cùng một dòng dữ liệu, giữa 2 lần đọc thì có một thao tác làm thay đổi giá trò dòng đó ở giao tác T1 => trong giao tác T2 mỗi lần đọc dòng đó sẽ cho ra những kết quả khác nhau. 4. Vấn đề “bóng ma” (phantom) Ví dụ: T1 thực hiện việc chuyển tiền từ tài khoản A sang tài khoản B. Khi T1 mới chỉ thực hiện thao tác trừ số tiền ở tài khoản A (chưa cộng số tiền vào tài khoản B) thì T2 muốn xem tổng số tiền ở hai tài khoản => Tổng số tiền không chính xác. Transaction T1 T2 Begin Transaction Read (A) A=A-50 Write (A) Begin Transaction Read(A) Read (B) Print (A+B) Commit T2 Read (B) B=B+50 Write (B) Commit T1 Ø Như vậy, một tiêu chuẩn để lập lòch các giao tác là việc thực hiện đồng thời các giao tác cho kết quả giống như khi thực hiện tuần tự các giao tác. III. Đơn vò dữ liệu: 1. Đònh nghóa: - Đơn vò dữ liệu (item) là đơn vò nhỏ nhất mà hệ quản trò CSDL có thể đọc/ghi một lần, là đơn vò để giải quyết tranh chấp. - Đơn vò dữ liệu có thể là database, table, field, record,… Ng Duc Thuan CSDLPT-Điều khiển tương tranh 4 + Nếu đònh nghóa đơn vò dữ liệu lớn thì số giao tác thực hiện giảm nhưng sẽ không có thuận lợi trong việc giải quyết tranh chấp. Ví dụ nếu đơn vò dữ liệu là bảng -> nhiều người cùng truy xuất trên bảng thì giao tác sau phải chờ giao tác trước nhả bảng ra. + Nếu đònh nghóa đơn vò dữ liệu nhỏ thì nhiều giao tác được thực hiện đồng thời. Ví dụ đơn vò dữ liệu là bộ thì việc truy xuất của người sử dụng trên các bộ khác nhau có thể chấp nhận được. - Các thao tác trên đơn vò dữ liệu A:Đọc, Ghi 2. Một số tính chất khi thao tác trên đơn vò dữ liệu: a. Hai thao tác tương thích: - Hai thao tác O i và O j (O i Ỵ Ti, O j Ỵ Tj) gọi là tương thích nếu và chỉ nếu kết quả của việc thực hiện đồng thời của O i và O j giống như kết quả của việc thực hiện tuần tự O i rồi đến O j hoặc O j rồi đến O i . Ø Ví dụ: T1 T2 Read A à a1 Read A à a2 a1 + 1 à a1 a2 * 2 à a2 11 O Print a1 Print a2 21 O Read A à a1 Read A à a2 a1 + 5 à a1 a2 * 2 à a2 12 O Write a1 à A Write a2 à A 22 O Read A à a1 Read A à a2 a1 + 2 à a1 a2 +7 à a2 13 O Write a1 à A Write a2 à A 23 O 14 O Read B à b1 b1 + 1 à b1 Write b1 à B - Thao tác 11 O và 21 O là tương thích - Thao tác 12 O và 22 O không tương thích - Thao tác 13 O và 23 O không tương thích - Thao tác 14 O tương thích với các thao tác còn lại. Như vậy, có thể rút ra kết luận: hai thao tác trên hai đơn vò dữ liệu là tương thích với nhau; 2 thao tác đọc trên cùng một đơn vò dữ liệu là tương thích. b. Hai thao tác khả hoán vò: - Hai thao tác i O , j O (O i Ỵ Ti, O j Ỵ Tj) là khả hoán vò nếu kết quả của việc thực hiện i O , j O hay j O , i O là như nhau. Ø Ví dụ: Xét ví dụ trên. - Thao tác 11 O và 21 O là khả hoán vò. - Thao tác 12 O và 22 O không khả hoán vò. - Thao tác 13 O và 23 O là khả hoán vò vì cuối cùng giá trò A ß A +9 Ng Duc Thuan CSDLPT-Điều khiển tương tranh 5 - Thao tác 14 O khả hoán vò với các thao tác còn lại. v Nhận xét: Ø Các thao tác truy xuất các đơn vò dữ liệu khác nhau thì tương thích và khả hoán vò. Ø Các thao tác truy xuất trên cùng đơn vò dữ liệu: - Nếu có liên quan đến phép cộng hay trừ thì khả hoán vò. - Read – Read ==> Khả hoán vò - Read – Write ==> Không có tính khả hoán vò - Write – Read ==> Không có tính khả hoán vò - Write – Write ==> Không có tính khả hoán vò IV. Lòch tuần tự – Lòch khả tuần tự: 1. Lòch tuần tự (serial schedule): - Một lòch S được lập từ n giao tác T 1 , T 2 ,…, T n xử lí đồng thời được gọi là lòch tuần tự nếu các thao tác của từng giao tác được thực hiện liên tiếp nhau. 2. Lòch khả tuần tự (serializable schedule): - Một lòch S được lập từ n giao tác T 1 , T 2 ,…, T n xử lí đồng thời được gọi là lòch khả tuần tự nếu nó cho cùng kết quả với một lòch tuần tự được lập từ n giao tác trên. Ø Ví dụ: 2 giao tác T1 và T2 có các thao tác sau: T1 T2 Read A à a1 Read A à a2 a1 + 1 à a1 a2 * 2 à a2 Write a1 à A Write a2 à A Read B à b1 Read B à b2 b1 + 1 à b1 b2 * 2 à b2 Write b1 à B Write b2 à B Lòch 1 (A=1, B=2) Lòch 2 (A=1, B=2) T1 T2 T1 T2 Read A à a1 Read A à a2 a1 + 1 à a1 a2 * 2 à a2 Write a1 à A (2) Read A à a1 Read A à a2 a1 + 1 à a1 a2 * 2 à a2 Write a2 à A (2) Write a2 à A (4) Read B à b2 Read B à b1 b2 * 2 à b2 b1 + 1 à b1 Write a1 à A (2) Write b1 à B (3) Read B à b1 Read B à b2 b1 + 1 à b1 b2 * 2 à b2 Write b1 à B (3) Write b2 à B (6) Write b2 à B (4) Ø Theo lòch 1, kết quả nhận được hoàn toàn tương tự như khi thực hiện tuần tự T1<T2 + Lòch 1 có tính khả tuần tự; lòch 2 không có tính khả tuần tự. Ng Duc Thuan CSDLPT-Điều khiển tương tranh 6 - Tính khả tuần tự của các giao tác là điều kiện đủ để tránh đụng độ trong việc truy xuất đồng thời (nếu khả tuần tự thì không đụng độ, nhưng nếu không khả tuần tự thì chưa chắc có đụng độ). - Bộ lập lòch (Scheduler): là một bộ phận của DBMS chòu trách nhiệm lập lòch khả tuần tự từ n giao tác xử lí đồng thời, sẽ tiến hành lập lòch các thao tác (thao tác sẽ được thực hiện trước, thao tác nào sẽ được thực hiện sau). 3. Thuật toán kiểm tra tính khả tuần tự của một lòch S: Input: Lòch S bất kỳ được hình thành từ n giao tác T 1 , T 2 ,…, T n . Output: Xác đònh xem S có khả tuần tự hay không bằng cách xây dựng một đồ thò có hướng G: - Mỗi giao tác Ti là một node. - Nếu có 1 giao tác Ti phát ra yêu cầu Read(X) và sau đó có một giao tác Tj (j ¹ i) phát ra yêu cầu Write (X) thì hình thành cung đi từ Ti đến Tj. - Nếu có 1 giao tác Ti phát ra yêu cầu Write(X) và sau đó có một giao tác Tj (j ¹ i) phát ra yêu cầu Write (X) / Read (X) thì hình thành cung đi từ Ti đến Tj. - Nếu đồ thò G có chu trình thì S không khả tuần tự. Ví dụ: Xét tính khả tuần tự của lòch thao tác sau: T1 T2 T3 T4 (1) Read A (2) Read A (3) Write B (4) Write A (5) Read B (6) Read B (7) Read A (8) Write B (9) Write A Đồ thò có chu trình T 1 ® T 4 ® T 1 nên không khả tuần tự T 1 T 2 T 4 T 3 Ng Duc Thuan CSDLPT-Điều khiển tương tranh 7 V. Kỹ thuật sắp xếp các giao tác bằng nhãn thời gian: Ø Chỉ sắp xếp thứ tự các giao tác (thời gian bắt đầu), không nhằm sắp xếp trình tự thực hiện các thao tác trong mỗi giao tác. 1. Khái niệm nhãn thời gian (timestamp) - Là 1 con số được phát sinh bởi bộ lập lòch, được gán cho mỗi giao tác để chỉ đònh thời điểm bắt đầu thực hiện giao tác. Nhãn thời gian có tính chất duy nhất và tăng dần. ( ji TjiTji ttTT <Û< ) - Nhãn thời gian của đơn vò dữ liệu: Nhãn thời gian của đơn vò dữ liệu chính là nhãn thời gian của giao tác cuối cùng có truy cập đến đơn vò dữ liệu đó thành công hoặc là nhãn thời gian cao nhất trong số các giao tác có truy cập thành công đến đơn vò dữ liệu đó. Ø Ví dụ: T1< T2<T3 T1 T2 T3 A t Read A 1TA tt= Read A 2TA tt= Read A 3TA tt = 2. Thuật toán sắp xếp toàn phần Procedure Read ( i T, A) Begin If i TiA tt £ then - Thực hiện thao tác đọc g - t A := Ti t Else Rollback i T và bắt đầu lại với nhãn thời gian mới End Proc Procedure Write ( i T, A) Begin If i TiA tt £ then - Thực hiện thao tác ghi g - t A := iT i t Else Rollback i T và bắt đầu lại với nhãn thời gian mới End Proc Ø Ghi chú: - t A : nhãn thời gian của đơn vò dữ liệu A - iT i t : nhãn thời gian của giao tác i T - Ban đầu 0= A t khi chưa có giao tác nào truy cập. Ø Ví dụ 1: 0,120,100 21 === ATT ttt Ng Duc Thuan CSDLPT-Điều khiển tương tranh 8 T1 T2 A t Read A A t=100 Read A A t =120 A = A+1 A = A+1 Write A A t =120 Write A A t> 1T t nên T1 phải rollback và bắt đầu lại với timestamp mới Ø Ví dụ 2: 0,120,100 21 === ATT ttt , Trong trường hợp này, rõ ràng không xảy ra đụng độ, T1 không cần phải rollback và bắt đầu lại với timestamp mới. Tuy nhiên, thuật toán sắp xếp toàn phần không phân biệt tính chất của thao tác dữ liệu là read hay write nên T1 vẫn bò rollback và phải bắt đầu lại. T1 T2 A t Read A A t=100 Read A A t =120 Read A A t =120 Read A A t> 1T t nên T1 phải rollback và bắt đầu lại với timestamp mới Ø Ví dụ 3: T1 T2 T3 A t B t C t 1T t =200 2T t =150 3T t =175 0 0 0 Read A 150 Read C 175 Read B 200 Write B 200 Write A 200 Write C T 2 rollback Write A T 3 rollback v Như vậy:Thuật toán sắp xếp toàn phần: không quan tâm đến tính chất của thao tác dữ liệu (Read/Write) nên chỉ có 1 nhãn thời gian duy nhất cho 1 đơn vò dữ liệu. Nếu quan tâm đến tính chất của thao tác dữ liệu thì cần 2 nhãn thời gian cho 1 đơn vò dữ liệu tương ứng với thao tác đọc và ghi trên đơn vò dữ liệu đó. 3. Thuật toán sắp xếp từng phần - Mỗi đơn vò dữ liệu A có 2 nhãn thời gian RTS và WTS. Ban đầu, RTS (A)= WTS(A) = 0 - RTS(A) chính là nhãn thời gian của giao tác có timestamp lớn nhất truy cập (read) thành công lên A. - WTS(A) chính là nhãn thời gian của giao tác có timestamp lớn nhất truy cập (write) thành công lên A. Ng Duc Thuan CSDLPT-Điều khiển tương tranh 9 Procedure Read ( i T, A) Begin If WTS (A) <= t Ti then - Thực hiện thao tác đọc g - RTS(A) := ( ) Ti tARTSMax ),( Else Rollback i T và bắt đầu lại với nhãn thời gian mới End Proc Procedure Write ( i T, g ) Begin If (RTS(A) <= t Ti ) and ( WTS(A) <= t Ti ) then - Thực hiện thao tác ghi g - WTS(A) := t Ti Else Rollback i T và bắt đầu lại với nhãn thời gian mới End Proc Ø Ví dụ: T1 ( 1T t =100) T2 ( 2T t =100) A t B t Read A A t = 100 Read A A t = 120 A = A+1 A = A+1 Write A A t = 120 Write A T 1 rollback v Nhận xét: Trong thuật toán sắp xếp từng phần, số lượng giao tác bò rollback ít hơn trong thuật toán sắp xếp toàn phần (do nếu 2 giao tác chỉ thực hiện thao tác “Đọc” thì không gây ra đụng độ) T1 T2 Nhận xét (1) Read A (2) Read A (3) Read A Thuật toán sắp xếp toàn phần: T1 bò rollback ở (3) Thuật toán sắp xếp từng phần: không có rollback T1 T2 Nhận xét (1) Read A (2) Write A (3) Read A Thuật toán sắp xếp toàn phần: T1 bò rollback ở (3) Thuật toán sắp xếp từng phần: T1 bò rollback ở (3) Ng Duc Thuan CSDLPT-Điều khiển tương tranh 10 VI. Điều khiển tương tranh bằng cơ chế khóa (lock): 1. Khái niệm khóa: - Để thấy được nhu cầu phải sử dụng khóa khi các giao tác thực hiện song song, ta xét ví dụ sau: Xét 2 giao tác T 1 và T 2 . Mỗi giao tác truy xuất 1 đơn vò dữ liệu A được giả sử là mang giá trò số nguyên, rồi cộng thêm 1 vào A. Hai giao tác này là các thực hiện của chương trình P dưới đây: P: Read (A) A= A+1 Write (A) Giá trò của A tồn tại trong CSDL, P đọc A vào vùng làm việc của nó, cộng 1 vào giá trò này tại đó rồi ghi kết quả vào trong CSDL. Trong hình sau, chúng ta thấy 2 giao tác đang thực hiện theo kiểu xen kẽ, và chúng ta ghi nhận giá trò của A trong CSDL tại mỗi bước: A trong CSDL 5 5 5 5 6 6 T 1 Read (A) A=A+1 Write (A) T 2 Read (A) A=A+1 Write (A) A trong vùng làm việc T 1 5 5 6 6 6 6 A trong vùng làm việc T 2 5 5 6 6 Chúng ta nhận ra rằng mặc dù hai giao tác đều đã cộng thêm 1 vào A, giá trò của A chỉ tăng 1. Vấn đề sẽ nghiêm trọng nếu A biểu thò số ghế đã bán của một chuyến bay. - Phương pháp thông dụng nhất để điều khiển việc truy xuất các đơn vò dữ liệu là sử dụng khóa (lock). Bộ quản lý khóa (Lock manager) là thành phần của DBMS chòu trách nhiệm theo dõi xem một đơn vò dữ liệu hiện có giao tác T nào đang đọc hay ghi vào các phần của A hay không. Nếu có thì bộ quản lý khóa sẽ ngăn cản không cho các giao tác khác truy xuất A trong trường hợp truy xuất (đọc hay ghi) có thể gây ra xung đột. - Như vậy: Lock là 1 đặc quyền truy xuất (access priveleg) lên các đơn vò dữ liệu của các giao tác mà bộ quản lý khóa có thể trao cho một giao tác hay thu hồi lại. Khi 1 giao tác đã khoá (lock) trên 1 đơn vò dữ liệu nào đó thì các giao tác khác không được phép truy cập đến đơn vò dữ liệu đó cho đến khi nó nhả khóa (unlock). - Khi 1 giao tác T thực hiện được việc lock đơn vò dữ liệu A, ta nói, T đang giữ lock A. - Thông thường, tại mỗi thời điểm, chỉ có 1 tập con các đơn vò dữ liệu bò khóa, vì vậy bộ quản lý khóa có thể lưu các khoá hiện hành trong một bảng khóa (lock table) với các mẫu tin có dạng sau: (A, L, T) (giao tác T có một khóa kiểu L trên đơn vò dữ liệu A) 2. Kỹ thuật khóa đơn giản: a. Giới thiệu: - Một giao tác khi có yêu cầu truy xuất đến đơn vò dữ liệu thì phải phát ra yêu cầu xin khóa (lock) trên đơn vò dữ liệu đó, nếu yêu cầu này được chấp thuận thì được quyền thao tác, và như vậy các giao tác khác sẽ không được phép truy cập đến đơn vò dữ liệu đó cho đến khi giao tác giữ khóa được unlock. Ø Ví dụ: Xét lại ví dụ trên được viết với các khóa như sau: [...]... tự Ví dụ như chiến lược lock 2 pha, hoặc yêu cầu các giao tác lock các đơn vò dữ liệu theo 1 thứ tự cố đònh nào đó CSDLPT -Điều khiển tương tranh 16 6 Nghi thức lock 2 giai đoạn (2 phase): Số các đơnvò dữ liệu bò giữ lock BOT EOT t phase lock phase unlock Ø Nghi thức khóa 2 giai đoạn (lock 2 phase): 1 giao tác thực hiện cơ chế lock 2 phase là 1 giao tác không thực hiện 1 lock nào nữa sau khi đã unlock... để được quyền khóa trên một đơn vò dữ liệu Thưc tế là nhiều khi một giao tác chỉ cần lấy giá trò của 1 đơn vò dữ liệu nhưng không thay đổi giá trò đó Vì vậy để giảm bớt tình huống phải chờ khi các giao tác cùng đọc dữ liệu, người ta đề nghò tách yêu cầu khóa thành 2 yêu cầu khóa riêng biệt: · Khóa để đọc (hay Shared lock): một giao tác T chỉ muốn đọc một đơn vò dữ liệu A sẽ thực hiện lệnh RLOCK(A),... phải ghi nhận tất cả các thỉnh cầu chưa được đáp ứng, và khi đơn vò dữ liệu A được mở khóa thì trao cho các giao tác đã xin đầu tiên trong số những giao tác đang đợi khóa A Và khi đó bộ lập lòch (schedulers) sẽ tiến hành thực hiện cơ chế: giao tác nào yêu cầu trước thì được đáp ứng trước (FIFO) h T c g N u D n a u CSDLPT -Điều khiển tương tranh - b Deadlock: Xét ví dụ sau: T1 Lock A T2 Lock B Lock A 15... tác khác) - Nếu Ti có 1 thao tác có dạng Unlock(A), Tj có thao tác tiếp theo sau đó có dạng Lock(A) (cùng đơn vò dữ liệu A) thì vẽ 1 cung có hướng đi từ Ti đến Tj (i.e., Ti phải thực hiện trước Tj) - Lòch thao tác khả tuần tự ó Đồ thò không có chu trình Ø Ví dụ 1: g N CSDLPT -Điều khiển tương tranh T1 Lock A Read A à a1 Unlock A 12 T2 Lock A Read A à a2 a2+1à a2 Write a2 à A Unlock A T1 T2 A1+1à a1 Lock... xin WLOCK(A) chỉ được chấp thuận nếu A được tự do - Ma trận tương thích các loại khóa: Lock đang được giữ R-lock W-lock Giao tác yêu cầu R-lock Yes No lock W-lock No No Ø Từ ma trận tương thích, chúng ta thấy rằng: 1 đơn vò dữ liệu tại 1 thời điểm có thể có nhiều transaction giữ Rlock nhưng chỉ có tối đa 1 transaction giữ Wlock Ø Việc sử dụng cơ chế lock không đủ để bảo đảm tính khả tuần tự cho lòch... A Unlock A (13) (14) n a u CSDLPT -Điều khiển tương tranh T1 T2 T4 T3 13 Những cung liền nét: xác đònh được từ thuật toán Những cung đứt nét: Khi T3 thực hiện lệnh Lock A (2) thì T2 đang giữ khóa A nên bắt buộc T3 phải thực hiện sau T2 => Chỉ cần thực hiện theo thuật toán (T2 ® T3 ® T1 ® T4) 3 Kỹ thuật khóa đọc/ viết (Readlock/Writelock): a Giới thiệu: - Nếu không phân biệt khóa cho thao tác đọc hay... Exclusive lock): một giao tác T muốn thay đổi giá trò của một đơn vò dữ liệu A đầu tiên sẽ lấy khóa ghi bằng cách thực hiện lệnh WLOCK(A) Khi 1 giao tác đang giữ 1 khóa ghi trên 1 đơn vò dữ liệu, các giao tác khác không thể lấy được khóa đọc hoặc khóa ghi trên A cùng lúc với T Cả hai khóa đọc và khóa ghi đều được loại bỏ bằng lệnh UNLOCK Ø Điều kiện để xin khóa đọc/ viết: + Một yêu cầu xin RLOCK(A) chỉ... lock trên 1 số đvdl nào đó được unlock bởi T2 - … - Tương tự, T1 thực hiện lock trên 1 số đvdl nào đó được unlock bởi Tn => T1 có dạng Lock … … Unlock … …Lock… => T1 không phải lock 2 pha Ø Sử dụng nghi thức lock 2 giai đoạn chỉ có thể đảm bảo tính khả tuần tự cho lòch thao tác nhưng không thể bảo đảm không xảy ra vấn đề deadlock CSDLPT -Điều khiển tương tranh Ø Ví dụ: T1 Lock A T2 Ghi chú Lock B Lock B... transaction giữ Wlock Ø Việc sử dụng cơ chế lock không đủ để bảo đảm tính khả tuần tự cho lòch thao tác Ví dụ: Lòch thao tác không khả tuần tự nên xảy ra lost update h T c g N u D n a u CSDLPT -Điều khiển tương tranh T1 14 T2 Rlock B Read B à a1 Unlock B Ghi chú a1=B=2 Rlock B Read B à a2 Unlock B a2+1àa2 Wlock B Write a2 à B Unlock B a2=B=2 a2 = 3 B = a2 = 3 a1+1àa1 a1 = 3 Wlock B Write a1 à B B = a1...CSDLPT -Điều khiển tương tranh 11 P: Lock (A) Read (A) A= A+1 Write (A) Unlock (A) Nếu T1 bắt đầu trước, nó yêu cầu khóa trên A Giả sử rằng không có giao tác nào đang khóa A, bộ quản lý khóa sẽ cho nó khóa này Bây giờ . Thuan CSDLPT -Điều khiển tương tranh 1 Chương IV : ĐIỀU KHIỂN TƯƠNG TRANH I. Giao tác (transaction) 1. Khái niệm: Giao tác là một tập hợp các thao tác có thứ tự truy xuất dữ liệu trên CSDL. Thuan CSDLPT -Điều khiển tương tranh 4 + Nếu đònh nghóa đơn vò dữ liệu lớn thì số giao tác thực hiện giảm nhưng sẽ không có thuận lợi trong việc giải quyết tranh chấp. Ví dụ nếu đơn vò dữ liệu là. thao tác dữ liệu (Read/Write) nên chỉ có 1 nhãn thời gian duy nhất cho 1 đơn vò dữ liệu. Nếu quan tâm đến tính chất của thao tác dữ liệu thì cần 2 nhãn thời gian cho 1 đơn vò dữ liệu tương ứng