Tab Menu

Các hệ quản trị CSDL - Bài tập 1

cac he quan tri csdl - bai tap 1 Các hệ quản trị CSDL

Đây là bài tập môn Các hệ quản trị CSDL s mới làm, nay post lên cho các bạn tham khảo. Nếu có gì sai sót các bạn góp ý hen.



Bài 1: Cho 3 giao tác T1,T2,T3 & 1 lịch S1
S1: R2(C), R1(A), R1(C), R3(A), R3(B), R2(B), W2(C),  W1(A),  W3(B),  W2(B), R1(B), R2(A), R3(C).
a. Cho biết S1 có khả tuần tự hay không? Tính A, B,C khi lịch S1 thực hiện xong, biết giá trị ban đầu A=2, 
B= -1, C=1. và   W1(A): A=C-A;   W2(C): C=B-2C;  
W2(B): B= -2C;  W3(B): B=2+B. Cho Ri,Wi thuộc Ti
b. Viết lại các Transaction trên thỏa nghi thức khóa 2 pha.
c. Lập 1 lịch S2 // (phi tuần tự) từ câu 2.



Bài làm (tham khảo)
a. Viết lại S1 như sau (cho dễ nhìn)

S1
T1
T2
T3

Rc

Ra


Rc




Ra


Rb

Rb


Wc

Wa




Wb

Wb

Rb



Ra





    + Các cặp xung đột:
                 P1: (R1c;W2c)
                 P2: (R3a;W1a)
                 P3: (R3b;W2b)
                 P4: (R2b;W3b)
                 P5: (W1a;R2a)
                 P6: (W3b;W2b)
                 P7: (W3b;R1b)
                 P8: (W2b;R1b)





Sơ đồ từ các cặp xung đột: P1( 1 qua 2) …

Có chu trình => Phi tuần tự.
Tính : theo thứ tự lịch S1
         W2c: C = B-2C = -1-2 = -3
         W1a: A = C-A = -3 -2 = -5
         W3b: B = 2+ (-1) = 1
         W2b: B = -2.-3 = 6

b. Khóa 2 pha (ULx không đứng trước WLx, RLx)
S1
T1
T2
T3
WLa
WLc
RLa
Ra
Rc
Ra
RLc
WLb
WLb
Rc
Rb
ULa
Wa
Wc
Rb
RLb
Wb
Wb
ULa
RLa
ULb
ULc
ULc

Rb
ULb

ULb
Ra


ULa



















c. Lịch S2 phi tuần tự:
S2
T1
T2
T3


RLa


Ra


WLb


ULa
WLa


Ra


RLc


Rc


Wa




Rb


Wb


ULb
RLb


ULa


ULc



WLc


Rc

Rb


ULb



WLb


Rb


Wc


Wb


RLa


ULc


ULb


Ra


ULa









































Bài tập 2

Hiện có 26 comments

Anonymous

thanks bạn nhiều nha, mong bạn post nhiều bài tập dạng này nữa :X

Anonymous

mình thấy một số bài có câu tìm lịch tuần tự tương đương, bạn chỉ mình làm bằng bài tập của bạn đi:)

Salipro Phạm

Chào @Nặc danh , với bài trên do S1 ta tìm được là không khả tuần tự (phi tuần tự) nên ta không thể tìm được lịch Sx tuần tự tương đương. Mh giả sử S1 là lịch phi tuần tự nhưng không chu trình nên là khả tuần tự, lúc này bạn sẽ căn cứ vào thứ tự T trong các cặp xung đột để tìm ra lịch tuần tự tương đương.
P1: (R1c;W2c)
P2: (R3a;W1a)
P3: (R3b;W2b)
...
Ta thấy T1 trước T2, T3 trước T1... Vậy lịch tuần tự tương đương là T3 > T1 > T2. Mong điều này sẽ giúp dc bạn :x

Anonymous

vẫn chưa hiểu gì cả :(. Nhưng thanks bạn vì đã giúp đỡ.

Anonymous

bạn giải thích cho mình chỗ này đi:
Ta thấy T1 trước T2, T3 trước T1... Vậy lịch tuần tự tương đương là T3 > T1 > T2.

Salipro Phạm

Hi@Nặc danh ! Mh giải thích cụ thể lại nha. Trong cặp xung đột P1(R1c;W2c), bạn sẽ thấy số 1 đứng trước số 2 (đừng quan tâm R,W), tương tự P2(R3a;W1a) có 3 trước 1 => Vị trí 3 > 1 > 2. Từ đây ta có lịch tuần tự tương đương là T3 read, write xong hết tới T1 và cuối cùng là T2.

Anonymous

thanks bạn vì đã giúp mình nhiều nha:X

Anonymous

Bạn ơi câu a) bạn làm thiếu R3C hay sao á, hay là bạn viết dư đề :S

Salipro Phạm

Cám ơn @Nặc danh đã góp ý nhé, do mh viết dư đề.

Duy

Câu A chuẩn rồi. Nhưng sơ đồ các cặp xung đột nên ghi xung đột trên A, B hay C sẽ rõ ràng hơn. Vd: Mũi tên từ 1->2 ghi C,A; 2->1 ghi B,...
Một số góp ý của mình. Thanks bạn! =D:

Anonymous

Bạn ơi...khóa 2 pha không cần ghi theo thứ tự trước sau hả bạn? Bạn có tài liệu nào về khóa 2 pha share mình với. Cảm ơn bạn !

Salipro Phạm

Chào @Nặc danh , khóa 2 pha là một nghi thức không phải là lịch S nên ta không cần theo thứ tự. Với khóa 2 pha, nó chỉ có một nguyên tắc duy nhất mình đã đề cập:
"Trong 1 transaction, trạng thái ULx không được đứng trước bất kì một RLx hoặc WLx nào cả." @-)

Anonymous

Lập 1 lịch S2 phi tuần tự từ câu 2 làm ntn vậy bạn?

lee ka

Bạn ơi...cho mình hỏi. Nếu ng ta bảo viết lại thõa nghi thức khóa 2 pha thì mình k cần theo thứ tự. Còn nếu bảo lập lịch song song thõa nghi thức khóa 2 pha thì phải viết theo thứ tự đúng k bạn?

Salipro Phạm

Đúng vậy @lee ka . Khi lập lịch chúng ta phải sắp xếp chúng theo thứ tự sao cho không bị đụng là OK.

Salipro Phạm

@Nặc danh , phía trên bài viết ở câu c) là kết quả mà bạn cần. Để làm được vậy, bạn cứ thử nhiều cách xếp miễn là đảm bảo:
- Một đối tượng a,b hoặc c tại một thời điểm chỉ có một T tác động tới chúng, và chúng phải được ULx trước khi T khác có thể tác động :(

Anonymous

Bạn ơi mình có thắc mắt hơi gà một tí đó là như bạn nói "Trong 1 transaction, trạng thái ULx không được đứng trước bất kì một RLx hoặc WLx nào cả." Như vậy thì trong câu b) ở transaction T3 có phần Ula đứng trước Wb là sao hả bạn, mình vẫn chưa rành lắm về kháo 2 pha này, bạn có thể nói rõ hơn một chút về vấn đề này được không? thanks ban :x

Anonymous

Chào bạn, bạn có bài tập nào về khóa chia sẽ độc quyền không, mình thấy một số đề thi cũng hay ra dạng này, anh em sẽ rất thanks bạn đấy, hihi.

Salipro Phạm

Chào các@Nặc danh , mình hy vọng các bạn sẽ sử dụng một Tên/URL để tham gia bình luận, khi đó mình sẽ dễ reply các bạn hơn ;)
- Ở T3, ULa trước Wb là hợp lý vì ULx luôn sau RLx hoặc WLx chứ không phải Wx bạn nhé.
- Mình có một vài bài tập về Khóa chia sẻ độc quyền, nhưng nếu bạn làm dc Khóa 2 pha thì nó không còn là vấn đề. Đây là đề thi môn này của s năm ấy Đề thi Hệ QTCSDL

Bình

Chào bạn, nếu như vậy thì Ulx cũng có thể đứng sau Wx đúng không. Ah, khóa chia sẽ độc quyền khác kháo 2 pha chỗ nào vậy bạn? Thanks bạn

Salipro Phạm

Hi @Bình , không phải là có thể mà luôn là như thế, "có thể" chỉ dùng cho trường hợp ULx đứng trước Wy hoặc Ry nào đó.
- Khóa 2pha là một khóa chia sẻ độc quyên có thêm 1 quy tắc như trên: Mọi ULx không dc đứng trước WLx hoặc RLx mà thôi. Còn khóa chia sẻ độc quyền lại là vấn đề khác :p

Dung Nguyen

Hình như phần W1a bạn làm bị sai rồi á,tại vì trước nó nó đọc lên bộ nhớ đệm là C=1,mặc dù W2c có ghi c=-3 nhưng mà bên T1 nó đã đọc trước C=1 rồi nên theo mình W1a=c-a=1-2=-1 mới đúng

Salipro Phạm

Thank @Dung Nguyen , cám ơn bạn đã góp ý, đây cũng là vấn đề chúng ta cần tìm hiểu thêm...

nhoxdalat92

câu 3 là sao mà T3 lại thực hiện trước z ban :D

Long

Câu a sai phần kết quả. A bằng -1 mới đúng vì C được đọc trước khi W(c) thực hiện.

Post a Comment

Bạn có thể tự do cho ý kiến, thảo luận về bài viết này nhưng phải theo những điều khoản sau:
- Phải nghiêm túc, không dung tục, không spam.
- Nội dung phải liên quan đến bài viết.
- Không mang tính chất chính trị...
- Hạn chế sử dụng Ẩn danh, hãy dùng Tên/URL để thay thế.
Lưu ý : Có thể sử dụng tag HTML cơ bản trong comment: br, b, i, u, a href= ...

:)
:(
;)
:D
=))
:-/
:x
I-)
@-)
=D:
:-q
:-w
[-X
B-)
:((
:-B
:-h
:x(
:-*
~O)
@};-

About

RSS
Coming soon... :))