Một giaodịch sẽ khơng yêu cầu khố một mục nếu nĩ đang hiện giữ khố của mục đĩ hoặc mở khố một mục mà nĩ hiện khơng giữ khố trên mục đĩ.

Một phần của tài liệu Giáo trình hệ cơ sở dữ liệu phân tán và suy diễn phần 1 nguyễn văn huân, phạm việt bình (Trang 118 - 127)

Các lịch biểu tuân theo quy tắc này được gọi là hợp lệ .

Ví dụ 2.31: Xét hai giao dịch đồng thời Ti và T2 cùng truy xuất đến mục dữ liệu A theo mơ hình này sẽ là: Ti L o c k A T2 Lock A Read A Read A A;=A+1 A:=A+1 Write A Write A Unlock A Unlock A

N eu T1 bắt đầu trước T2, nĩ sẽ yêu cầu khố ừên mục A. Giả sử khơng cĩ giao dịch nào đang khố A, bộ quản lý khố sỗ cho nĩ khố mục này. Khi đĩ chỉ cĩ T1 mới được truy xuất đến mục này. Nếu T2 bắt đầu trước khi Ti chấm dứt thi T2 thực hiện Lock A, hệ thống buộc T2 phải đợi. Chi đến khi T| thực hiện lệnh Unlock A, hệ thống mới cho phép T2tiến hành. Như vậy, Tị hồn thành trước khi T2 bắt đầu và kết quả là sau hai giao dịch, giá ừị của A sẽ là 32

Với mơ hình này, để kiểm tra tính khả tuần tự của một lịch biểu, ta sẽ xem xét thứ tự mà các giao dịch khố một mục đã cho. Thứ tự này phải thống nhất với thứ tự trong lịch biểu tuần tự tương đưomg. Đây thực chất là việc kiểm tra một đồ thị cĩ chu trình hay khơng.

Thuật tốn 3: Kiểm fra tính khả tuần tự của một lịch biểu.

Nhập\ Một lịch biểu s cho một tập các giao dịch T), T2,—, Tfc.

Phương pháp:

Bưỏ'c 1: Tạo ra một đồ thị cĩ hướng G (gọi là đồ thị tuần tự liố), cĩ các nút là các giao dịch, các cung của đồ thị này đưọc xác định như sau:

Gọi s là ai, a2,... a„

trong đĩ mỗi a, là một thao tác của một giao dịch cĩ dạng;

Tị: L ock A|„ h o ặ c Tj : U n lo c k A|„

với Tj là giao dịch thực hiện thao tác khố hoặc mỏ' mục A|„. Nếu a, là Unlock A,„

thì hành động ẵp kế tiếp a, cĩ dạng Ts! Lock A,„. Neu s ^ j thì vẽ một cung từ T| đến Ts- Cung này cĩ nghĩa là trong lịch biểu tuần tự tương đương, Tj phải đi trước Ts.

Bước 2 : Kiểm tra, ộ cỏ chu trình thì s bất khả tuần tự. Neu G khơng cĩ chu trinh thì ta tìm một thứ tự tuyến tính cho các giao dịch, trong đĩ T, đi trước Tj khi cĩ một cung đi từ T| -> Tj. Đe tim thử tự tuyến tính đĩ, ta thục hiện quá trinh sắp xếp topo như sau. Đầu tiên ta xuất phát từ một nút T| khơií^ cĩ cung vào (ta luơn tìm thấy một nút như thế, nếu khơng thì G là một đồ thị cĩ chu trình), liệt kê T| rồi loại bỏ Tj ra khỏi G. Sau đĩ lặp lại quá trình trên cho đến khi đồ thị khơng cịn nút nào nữa. Khi đĩ, thứ tự các nút được liệt kê là thứ tự tuần tự của các giao dịch.

Ví dụ 2.32: Giả sừ ta cĩ lịch biếu cúa ba giao dịch T|, T), Tu như sau

TI : Lock A Tị ; Lock B T j : Lock c Tj : Unlock B TI : Lock B T, ; Unlock*A T2 : Lock A T2: Unlock c T2: Unlock A T3: Lock A T, : Lock c T, : Unlock B T3 : Unlock c T3 : Unlock A

ĐỒ thị cĩ 3 .lút T |, T2 và T3. Các cung được xây dirng nliư sau:

ở bước (4) ta cĩ Tị : Unlock B, bưĩc tiếp theo cĩ lệnh Lock B là bước (5) T|: Lock B. Vậy ta vẽ một cung từ Ti > T|.

ở bước (6) ta cỏ T| : Unlock A, bước tiếp theo cĩ lệnh Lock A ià bước (7) Tv Lock A.

bưỏc (8) ta cĩ T2 : Unlock c , bước tiếp theo cĩ lệnh Lock c là bước (II) T v Lock c.

Vậy ta vẽ một cung từ T2 T ì.

ở bưĩc (9) ta cĩ T: :Unlock A, bưĩc tiếp theo cĩ lệnh Lock A là bưĩc (10) cĩ Ty. Lock A. Vậy ta vẽ một cung từ T? Tv

Đồ thị này cĩ một chu trinh nên lịch biểu đã cho bất khả tuần tự. / 7(ỉụ 2 .3 3 : Lịch biếu của ba giao dịch T|, Ti. Tí

(1) T: : Lock A (2) T. ; Unlock A (3) T3 : Lock A (4) T;, : Unlock A (5) T1 : Lock B (6) T, ; Unlock B (7) Tt : Lock B (8) T2 : Unlock B 0 -

Hình 2. Ị 7. Đ ồ thị tuần tự cho ba giao dịch.

2.5,4,2. M ơ h ìn h kh ĩa đọc và kh ĩa g h i

Trong mơ hình khố c a bàn, ta già sử rằng khi khố một mục cĩ tlìể thay đồi mục đĩ. Trên thực tế, cĩ những trường hợp một giao dịch truv cập một mục theo nghĩa chí đọc giá trị của mục đĩ khơng thay đối giá trị của mục đĩ. Vì vậy nếu ta phân biệt hai loại truy cập: chi đọc (read only) và đọc ghi (read write), thi ta cĩ thể tiến hành được một số thao tác đồng thời bị cấm trong mọ hình khố cơ bản. Khi đĩ, ta phân biệt hai loại khố như sau:

Khố đọc (read lock or shared lock) ký hiệu RLock hoạt động như sau: một giao dịch T

chí muốn đọc một mục A sẽ thực hiện lệnh RLock A, ngăn khơng cho bất kỳ giao dịch khác ghi giá trị mới vào A trong khi T đã khố A, nlumg các giao dịch khác vẫn cĩ thế giừ một khố đọc trên A cùng lúc với T.

Khố ghi (write lock) ký hiệu WLock hoạt động như trong mơ hinh khố cơ bản, nghĩa

là một giao dịch muốn thay đổi giá trị của mục A sẽ thực hiện lệnh WLock A. Khi đỏ khơng một giao dịch nào được lấy khố đọc hoặc khố ghi trẻn mục đĩ. (adsbygoogle = window.adsbygoogle || []).push({});

Cả khố đọc và khố ghi đều được mớ bàng lệnh Unlock. Ngồi các giá định như mơ hinh khố cơ bản, ta cĩ thêm giá định rằng một giao dịch cĩ thể yêu cầLi một khố ghi trên mục

Hai lich bieu la tuang dirong neu; chung sinh ra cung mot gia tri cho moi muc va moi khoa doc dugc ap dung boi mot giao dich xay ra trong ca hai lich bieu vao nhung luc muc bi khoa CO cimg gia tri.

T h u a t to a n 4: Kiem tra tinh kha tuan tu cua cac lich bieu vai cac khoa doc/ghi.

Nhgp: Mot lich bieu S cho mot tap cac giao dich T], T ; ... ]\.

Xudt: Khang dinh S c6 kha tuan tir hay khong? Neu c6 thi dua ra mot lich bieu tuan tir tu’ong duong voi S.

Phu’O’ng phap:

Bu'oc 1: Chung ta xay dung mot do thi c6 huong G (goi la do thi tuan tir hoa), c6 cac nut la cac giao dich. Cac cung cua do thi dugc xac dinh bang quy tac sau:

Gia su‘ trong S, T, nhan khoa doc hoac khoa ghi muc A, '1', la giao dich ke tiep khoa ghi A, va i ^ j, thi ta se dat mot cung tu' T, Tj.

Gia sir trong S, giao dich Tj khoa ghi A, T,n la khoa doc A sau khi T, m o khoa A nhung truoc cac giao dich khac khoa ghi A, va i ^ m, thi ta se dat mot cung tir T, —> T,,,.

Birac 2 : Kiem tra, neu G c6 chu trinh thi S bat kha tuan tir. Neu G khong c6 chu trinh thi mot sap xep tope cua G la thiV tu tuan tir cua cac giao dich nay.

Vi du 2.34: Mot lich bieu ciia bon giao dicii (1) T2 : RLock A (2) : RLock A (3) T. : WLock B (4) T. ; Unlock A (5) : WLock A (6) T2: Unlock B (7) T1 : RLock B (8) : Unlock A (9) Tj : RLock B (10) T1 : RLock A (11) T4 : Unlock B (12) T, : WLock C (13) T| : Unlock A (14) Tj : WLock A (15) Tj : Unlock A (16) T, : Unlock B (17) T, : Unlock C

D6 thi tu4n tir hoa ciia lich bieu nay dugc trinh bay trong hinh 2.18.

ở buức (4) T2 mị' khố mục A.

Bước (5) T;, khố ghi mục A, T3 phái đi sau T2, cĩ một cung từ Ty đến Tv ở bước (6) T2 mờ khố mục B.

Bước (7) T1 các khố đọc mục B và T4 ờ bước (9). Như vậy T| và T4 phải đi sau T.ì, cĩ một cung từ T2 đến các nút này.

ở bưĩc (8) Tì mỏ' khố mục A.

Bước (10) T| là khố đọc mục A và khố ghi mục A của T4 ờ bước (14). Như vậy TI và

T4 phải đi sau T3, cĩ một cung từ T3 đến các nút này.

ở bước (13) Tị mỏ- khố mục A, bưĩc (14) T4 khố ghi mục A, T4 phải đi sau T|, cĩ một cung từ T| đến T4.

Hình 2.18. Đ ồ thị tuần tự hố.

Sắp xếp topo cho đồ thị ta được thứ tự các giao dịch là; T |- > T7-> T3 --> T4

Giao thức hai pha của mơ hình trước cOng cĩ the áp dụng cho mơ hinh này. Các khố đọc và khố ghi đều đi trước bước mở khố, và điều đĩ sẽ đảm bảo tính khả tuần tự của lịch biêu.

Trong mơ hinh này ta cũng rút ra được quy tắc liên quan đển việc trao kliố nhir sau: Một khố đọc trên một mục cĩ thể được trao cho một giao dịch nếu khơng cĩ khố ghi nào đang được một giao dịch khác giữ trên nĩ.

Một khố ghi trén một mục chỉ cĩ thể được trao cho một giao dịch nếu khơng cĩ khố đọc hoặc khố ghi nào đang được một giao dịch khác giữ trên mục đỏ.

2.5,4.3, T h u ật tốn điều khiển tư ơ n g tra n h b ằ n g nhãn th ờ i gian

Đẻ đàm bảo tính khả tuần tự cùa các lịch biểu, ngồi các mơ hình sử dụng khố như đã trinh bày ở trên. Ta cịn sử dụng nhãn thời gian (timestamp). Ý tưởng chính là gán cho mỗi giao dịch một nhãn thời gian, đĩ chính là điểm bắt đầu của giao dịch. Chẳng hạn mồi khi một giao dịch bắt đẩu, hệ thống sẽ gọi bộ xếp lịch và giao dịch sẽ được trao cho một nhãn thời gian hoặc giá bộ xếp lịch sẽ trao nhãn thời gian khi lần đầu tiên giao dịch này yêu cầu truy xuất một mục nào đĩ của cơ sở dữ liệu.

• Thiết !ập nhãn thịi gian

Nếu tất cả các giao dịch đều được bộ lập lịch gáỉì ỉìhàỉi ihởì giun thì bộ lập lịch sẽ duy trì bộ đếm số lượng các giao dịch đà đưọc lặp lịch. Khi cĩ một ũ;iao dịch mĩi yẻu cầu được lập lịch, bộ lập lịch sẽ tăng bộ đếm số lưọng này lên một đon vị và iịản trị số đĩ cho siao dịch cĩ yêu cầu. Như vậy, khơng thề xảy ra trường họp hai giao dịch cĩ cùng nhãn thời gian, và thử tụ tương đối giữa các ìĩhãỉi thìĩị g k w cùa các giao dịch cìiim chính là thứ tụ mà các íiiao dịch đưọc thực hiện.

Một cách gáìi rìhãn thời gỉan khác cho các giao dịch là dùng giá trị của đồng hồ hệ thống tại thời điểm bắt đầu giao dịch.

Trong trường họp tồn tại nhiều bộ xếp lịch do hệ ihốno CSDL chạy trẽn một máv đa bộ xử lý hoặc trong hệ CSDL phân tán. thì ta phái gán thêm niội hậu tố duy nhất cho mồi nhăn thịi gian. Hậu tố này chính là định danh cua bộ xử K tưonu ứn” . Klii đĩ, việc đồng bộ hố các bộ đếm hoặc đồng hồ được dùng ớ mỗi bộ \ ứ lý là một yẻu cầu quan trọnu đẽ đảm bao tính khá tuần tự của các lịch biểu. (adsbygoogle = window.adsbygoogle || []).push({});

Đảm bảo tính khả tuần tự bằng nhãn thời gian

Trong lưọc đồ đọc “■ ghi, chúng ta đã liên kết mỗi mục trong cơ sỏ’ dữ liệu với hai thời điểm:

- Thịi điểm đọc (RT - Read Time); là nhãn thịi gian cao nhắl cĩ được do một giao dịch đã đọc mục đĩ.

- Thời điểm ghi (W T - Write Time): là nhãn thịi gian cao nhất cĩ được do một giao dịch đã ghi mục đĩ.

Bằnệ cách thực hiện như thế, chúng ta cĩ thể cho rằng mồi giao dịch sẽ tlìực hiện ngay lập tức, tại thịi điểm đưọc chỉ ra bànu nhăn thịi gian.

Trước hết, chúng ta cần quan tâm tới một số lỉnh huong sau:

(1). Khơng xảy ra trường hợp một giao dịch đọc đtrọc giá trị cúa mỗi mục nếu giá trị đĩ chưa được ghi cho đến sau lúc thực hiện giao dịch đĩ. Nghĩa là mộl giao dịch cĩ nhãn thời gian tị khơng thể đọc một mục cỏ thời điểm ghi là Í2 > t|. Nếu íiìột trường liợp như trên xảy ra thì giao dịch cĩ nhãn thời gian t| phải bị luiỷ bỏ và được khơi động lại với nhãn thời gian mới.

(2). Khơng xảy ra trưịna họp một giao dịch ghi giá trị cùa một mục nếu giá trị cũ ciìa mục đỏ được đọc tại một thịi điểm sau đĩ. Nghĩa là một giao dịch cĩ nhàn thời gian ÍỊ khơng thể ghi một mục cỏ thời điểm đọc Ì2. nếu t.i > t|. Nếu một trưịng họp như trên xáy ra thi giao dịch cĩ nhăn thời gian tị phải bị huỳ bị và đưọc khới động lạỉ với nhãn thời gian mĩi.

Ọuy tắc duy tri thứ tự tuần tự của nhàn thịi gian như sau. Giả sứ ta cĩ một giao dịch cỏ nhãn thịi gian t đang muốn thực hiện một thao tác X trên một mục cĩ thịi điếm đọc t( và thịi điểm ghi thi:

a/ Cho thực hiện thao tác này nếu: X ^ Read và t > hoặc

X - Write và t > tr và t > tw

Trong trườr.g họp trước, đặt thịi điểm đọc là t nếu t > tj và trong trường hợp sau, đặt thời điểm ghi là t nếu t > t,,.

b/ Khơng thực hiện gì nếu X = Write và t, < t <

c/ Huỷ bỏ giao dịch này nếu: X = Read và t < tu hoặc X = Write và t < t,

Ví dụ 2.35: Trong đĩ RLock được xem là Read, WLock được xem là Write, các bước

Unlock khơne tồn tại. Các giao dịch Ti, Tt , Ta, T4 cĩ các nhãn thời gian lần lượt là 100, 200, 300, 400.

ở bước (1), T2 (cĩ nhãn thịi gian là t = 200) đọc A (cĩ WT = 0), tức t > t„. Thao tác này là đưọc phép, và vi t > tr (bằng 0) nên RT cùa A đuọc đặt lại là 200.

Tương tự ở bưĩc (2), T3 (cĩ nhãn thịi gian là t = 300) đọc A (cĩ WT = 0), tức t > t„. Thao tác này là đưọc phép, và vì t > tr (bằng 200) nên RT cìia A đưọc đặt lại là 300.

ở bước (3), T7 (cĩ nhãn thời gian là t = 200) ghi B (cĩ RT = 0 và W T = 0), tức t > Tr và t > tw Thao tác này là được phép, vi t > tw (bằng 0) nên WT của B được đặt lại là 200.

ở bước (4), T;, (cĩ nhãn thời gian là t 300) ghi A (cĩ RT =" 300 và WT=0), tức t > T f

và t > t«. Thao tác 'lày là được phép, vi t > t\v' (bằng 0) nên WT của A được đặt lại là 300. ờ bước (5), T| (cĩ nhãn thời gian là t = 100) đọc B (cĩ WT = 200), tức t < tw Vi vậy thao tác này bị huỷ bỏ.

TI T| T,_________T., T4________ A___________ B__________ c 100 200 300 400 RT=0 RT=0 RT=0 WT=0 WT=0 WT=0 (1) Read A R T -2 00 (2) Read A RT=300 (3) Write B WT=200 (4) Write A WT=300 (5) Read B T ị bị huỷ bỏ

Vi dụ 2.36\ Giả sử cĩ hai giao dịch T|, T ị cùiĩg đồng thời truy xuất tĩi một mục dữ liệu A. Với RT là thịi điểm đọc và WT là thịi điếm ghi của mục dữ liệu A được chỉ ra khi nĩ bị thay đổi. Chúng ta giả sử rằng thời điểm đọc và thời điểm ghi ban đầu là 0. Và T |, T2 cĩ nhãn thời gian tương ứng là 150 và 160.

G iả sử các giao dịch được thục hiện với một dãy các hành động như sau:

... 50 . 160 R T = 0 WT - 0 (1) Read A (2) Read A (3) A;=A+1 (4) A:=A+1 (5) Write A (6) Write A

Yeu cau: Anh (chj) hay cho biet giao dich nao xay ra, giao dich nao bi huy bo va dien giai? Nhan xet.

Tra I6i:

Xac dinh RT, WT cua tung thao tac

T, T. A 150 160 RT - 0 W T = 0 (1) Read A R T - I 5 0 (2) Read A RT= 160 (3) A:=A+I (4) A:=A+1 (5) Write A WT=160 (6) Write A TI bi huy bo Dien giai:

Tai buac (1): RT ciia A la: 150 do T| doc muc du' lieu A (2): RT cua A la: 160 do T id o c muc du' lieu A (3): TI thirc hien tinh A (adsbygoogle = window.adsbygoogle || []).push({});

(4): Ti thuc hien tinh A

(5): Khi Tt ghi A. nhan thai gian ciia Ti la 160 => WT = 160, ciing khong nho hon WT cua A ia 0. Thao tac ghi nay dirge thirc hien

(6): Khi T| co g^ng ghi vao A, nhan thai gian cua T| la 150 => WT 150 < RT = 160 => Thao nay bi huy bo.

Nhan xet: Mgt chuoi sir kien tuong tir cimg xay ra neu nhan thai gian ciia T| > Ti > Do do Tj bi huy bo a bu'oc (5).

Vi du 2.37: Gia sir co ba giao dich T|, Ti, T;, hoat tac tren ba muc du' lieu A, B. C v6i nhan thai gian tuong ung la 200, 150, 175. Vai RT la thai diem doc va W T la thai diem ghi ciia muc dir lieu A dugc chi ra khi no bj thay doi. Chung ta gia sir rang thai diem doc va thai diem ghi ban dau la 0.

Gia sir cac giao dich dirge thirc hien v6i mot day cac .... ^ T... T,

^ ....1 50 ... ...

200

anh dong nhir sau:

(1) (2) (3) (4) (5) (6) (7) Read B Write B Write A Read A Write C Read C Write A

Y êu cầu : Anh (chị) hãy cho biết giao dịch nào xáy ra, giao dịch nào bị huỳ bỏ và diễn giải? Nhận xét. T r ả lịi: Xác định RT, W T của từng thao tác TI T2 T3 A B c 200 150 175 RT = 0 RT = 0 RT = 0 W T -0 WT = 0 W T - 0 (I) Read B RT - 200 (2) Read A R T = 150 (3) Read c RT= 175 (4) Write B W T = 200

Một phần của tài liệu Giáo trình hệ cơ sở dữ liệu phân tán và suy diễn phần 1 nguyễn văn huân, phạm việt bình (Trang 118 - 127)