Professional Documents
Culture Documents
BT CK HQT CSDL
BT CK HQT CSDL
https://courses.uit.edu.vn/pluginfile.php/328300/mod_resource/content/2/
DeThiLTHQTCSDL_DHCNTT_CuoiKy_HK1_2019-2020.pdf
Câu 1:
a. Dùng đồ thị chờ để đánh giá lịch S có xảy ra deadlock hay không?
● Xét đơn vị dữ liệu A
○ Cặp (1, 13): T1 → T2
● Xét đơn vị dữ liệu B
○ Cặp (5, 9): T3 → T2
● Xét đơn vị dữ liệu C
○ Cặp (3, 11): T2 → T1
○ Cặp (3, 15): T3 → T1
Đồ thị chờ có chu trình (T1 → T2, T2 → T1) nên lịch S xảy ra deadlock.
b. Nếu có deadlock, hãy đưa ra 1 giải pháp cụ thể để giải quyết deadlock. Cho biết
các giá trị của A, B, C, D ứng với giải pháp này sau khi kết thúc các Ti.
Chọn T1 để rollback
● T1 giải phóng khóa đang giữ trên C và trên D.
● T2 hoặc T3 sẽ được khóa trên C.
● Giả sử T2 xin được khóa trên C, T2 thực hiện xong và kết thúc, T2 giải
phóng khóa trên A, B và C.
● T3 xin được khóa trên B và C, thực hiện xong và kết thúc.
T1 sẽ được thực hiện lại ở 1 thời điểm nào đó và sẽ nhận được khóa trên A khi T2, T3
hoàn tất.
Lịch khả tuần tự theo thứ tự {T2, T3, T1}
● Sau khi T2 thực hiện, ta có: B=3, C=2
● Sau khi T3 thực hiện, ta có: C=4
● Sau khi T1 thực hiện, ta có: A=3
Kết luận: A=3, B=3, C=4, D=2
c. Hãy điều khiển việc truy xuất đồng thời của các giao tác dùng kỹ thuật timestamp
từng phần
STT T1 T2 T3 A B C D Ghi chú
TS=20 TS=10 TS=30 RT=0 RT=0 RT=0 RT=0
WT=0 WT=0 WT=0 WT=0
6 W(C) RT(C)>TS(T2)
↓ T2 không ghi được C
Abort Rollback(T2)
7 W(A)
8 W(C)
Tại thời điểm 6, T2 bị Rollback, khởi tạo lại T2 với TS(T2) = 40
Hãy mô tả tiến trình khôi phục của DBMS khi dùng phương pháp Undo logging
<T4, B, 80>
○ T4 chưa kết thúc
○ Khôi phục B=80
● <END CKPT>
○ Những giao tác bắt đầu trước <start CKPT> đã hoàn tất
○ T1 và T2 đã hoàn tất
● <T4, F, 70>
○ Khôi phục F=70
● <T3, D, 40>
○ Khôi phục D=40
● <T3, B, 20>
○ Khôi phục B=30
● <START CKPT (T2)>
○ Dừng
Câu 3: (2.5 điểm)
Cho lược đồ quan hệ như sau:
TACGIA (MaTG, HoTen, DiaChi, NgSinh, SoDT)
SACH (MaSach, TenSach, TheLoai)
TACGIA_SACH (MaTG, MaSach)
PHATHANH (MaPH, MaSach, NgayPH, SoLuong, NhaXuatBan)
Câu 1:
a) Dùng đồ thị chờ để đánh giá lịch S có xảy ra deadlock hay không? Giải thích. (1.0
điểm)
● Xét đơn vị dữ liệu A
○ Cặp (1, 8): T2 → T1
● Xét đơn vị dữ liệu B
● Cặp (3, 4): T4 → T1
○ Cặp (3, 6): T3 → T1
● Xét đơn vị dữ liệu C
○ Cặp (2, 7): T1 → T2
○ Cặp (2, 9): T3 → T2
● Xét đơn vị dữ liệu D
○ Cặp (5, 10): T3 → T4
Đồ thị chờ có chu trình (T1 → T2, T2 → T1) nên lịch S xảy ra deadlock.
b) Nếu có deadlock, hãy đưa ra 1 giải pháp cụ thể để tránh và 1 giải pháp để giải quyết.
(2.0 điểm)
Chọn T1 để rollback
● T1 giải phóng khóa đang giữ trên A và B.
● T2 sẽ được khóa trên A, T3 hoặc T4 sẽ được khóa trên B
● T2 thực hiện xong và kết thúc, T2 giải phóng khóa trên A và C, T1 hoặc T3
sẽ được khóa trên C
● Giả sử T4 xin được khóa trên B, T4 thực hiện xong và kết thúc, T4 giải
phóng khóa trên B và D.
● Giả sử T3 xin được khóa trên C, T3 có khóa trên B và D, T3 thực hiện xong
và kết thúc, T3 giải phóng khóa trên B, C và D
T1 sẽ được thực hiện lại ở 1 thời điểm nào đó và sẽ nhận được khóa trên C khi T2, T4,
T3 hoàn tất.
Lịch khả tuần tự theo thứ tự {T2, T4, T3, T1}
Khi T2 bị rollback, T1 nhận được khóa trên C, thực hiện xong và kết thúc.
T2, T4, T3 thực hiện lại.
T2 nhận được khóa trên A. T4 nhận được khóa trên B.
T3 thực hiện lại, nhận được khóa trên B, C, D sau khi T4, T2 thực hiện xong và kết thúc.
7 W(C) RT(C)>TS(T1)
↓ T1 không ghi được
Abort trên C
Rollback(T1)
8 W(A)
9 W(C)
10 R(D)
Câu 2:
Hãy mô tả tiến trình khôi phục của DBMS khi dùng phương pháp Undo/Redo logging.
● T1 đã hoàn thành trước <start CKPT>
○ Có thể đã được ghi xuống đĩa
○ Nếu chưa thì trước khi <end CKPT> cũng được ghi xuống đĩa
● Giá trị B=22 đã được ghi xuống đĩa
● Tìm thấy <end CKPT>
○ T1 không cần thực hiện lại
● Xét T2, T3 và T4
● <commit T2> (redo, sau)
○ Thực hiện lại T2 và ghi D=41, F=71
○ Không cần ghi B
● <commit T3>
○ Thực hiện lại T3 và ghi C=61, E=31
● T4 chưa kết thúc (undo, trước)
○ Khôi phục G=51
○ Khôi phục G=50
Câu 3:
Cây biểu diễn biểu thức truy vấn ban đầu
Cây biểu diễn biểu thức truy vấn sau khi tối ưu hóa
Câu truy vấn
Đề học kỳ 2 2019-2020
Câu 2
<START T1> <T2, E, 5>
<T1, A, 10> <COMMIT T2>
<START T2> --------- <T3, F, 1>
<T2, B, 5> <T4, G, 15>
<T1, C, 7> <END CKPT>
<START T3> <COMMIT T3>
<T3, D, 12> <START T5>
<COMMIT T1> <T5, H, 3>
<START CKPT (T2, T3)> <START CKPT (T4, T5)>
<START T4> <COMMIT T5>
Redo Logging
T1 đã hoàn tất trước <start CKPT (T2, T3)>
o Có thể được ghi xuống đĩa
o Nếu chưa thì trước khi <end CKPT> cũng được ghi xuống đĩa
Sau <start CKPT (T2, T3)>
o T2 thực thi và kết thúc
o T3 đang thực thi
o T4 bắt đầu thực thi
Sau <end CKPT>
o T3 hoàn tất
o T4 chưa hoàn tất
Sau <start CKPT (T4, T5)>
o T5 hoàn tất
o T4 đang thực thi
Tìm thấy <end CKPT>
Chỉ xét T2, T3, T5
<commit T2>
o Thực hiện lại T2
Ghi B=5, E=5
<commit T3>
o Thực hiện lại T3
Ghi D=12, F=1
<commit T5>
o Thực hiện lại T5
Ghi H=3
Đồ thị chờ có chu trình (T1T3, T3T2T1) nên lịch S xảy ra deadlock
b) Nếu có deadlock, hãy đưa ra 2 giải pháp cụ thể để giải quyết deadlock. (1.5 điểm)
Chọn T1 để rollback
● T1 giải phóng khóa đang giữ trên A và C.
● T4 sẽ được khóa trên A, T2 sẽ được khóa trên C.
Giải pháp 1: T4 xin được khóa trên A
● T4 thực hiện xong và kết thúc, giải phóng khóa trên E và A
● T2 thực hiện xong và kết thúc, giải phóng khóa trên B và C
● T3 xin được khóa trên B, thực hiện xong và kết thúc, giải phóng khóa trên D và B
T1 sẽ được thực hiện lại ở 1 thời điểm nào đó và sẽ nhận được khóa trên D khi T2, T3,
T4 hoàn tất.
Lịch khả tuần tự theo thứ tự {T4, T2, T3, T1}
S T1 T2 T3 T4 A B C D E Ghi chú
T TS=10 TS=20 TS=30 TS=40 RT=0 RT=0 RT=0 RT=0 RT=0
T WT=0 WT=0 WT=0 WT=0 WT=0
9 W(D) RT(D)>TS(T1)
T1 không ghi được trên D
Rollback Rollback(T1)
Tại thời điểm 9, T1 bị Rollback, khởi tạo lại T1 với TS(T1)=50
S T1 T2 T3 T4 A B C D E Ghi chú
T TS=50 TS=20 TS=30 TS=40 RT=0 RT=0 RT=0 RT=0 RT=0
T WT=0 WT=0 WT=0 WT=0 WT=0
<START S>
<S, A, 60>
<COMMIT S>
<START T> ----
<T, A, 10>
<start CKPT T>
<START U>
<U, B, 20>
<T, C, 30>
<START V>
<U, D, 40>
<V, F, 70>
---------------------
<COMMIT U>
<T, E, 50>
<COMMIT T>
<end CKPT>
<V, B, 80>
<COMMIT V>
a. Giả sử đặt một điểm lưu trữ (nonquiescent checkpoint) sau bước <T, A, 10> thì mẫu tin
<END CKPT> có thể được ghi xuống bộ nhớ sau bước <commit T>
b. Dùng nhật ký của câu (a): giả sử rằng một sự cố xảy ra ngay sau bước <V, F, 70> thì
tiến trình khôi phục của DBMS như thế nào khi dùng phương pháp Undo-Logging?
<V, F, 70>
o V chưa kết thúc
o Khôi phục F=70
<U, D, 40>
o U chưa kết thúc
o Khôi phục D=40
<T, C, 30>
o T bắt đầu trước <start CKPT> và chưa kết thúc
o Khôi phục C=30
<U, B, 20>
o Khôi phục B=20
<T, A, 10>
o Khôi phục A =10
<start T>
o Dừng
c. Dùng phương pháp Redo-Logging cho nhật ký NKĐB trên: Giả sử đặt một điểm
lưu trữ (nonquiescent checkpoint) sau bước <T, E, 50> thì mẫu tin <END CKPT>
có thể được ghi xuống bộ nhớ sau <start CKPT> và trước <commit T>
<START S>
<S, A, 60>
<COMMIT S>
<START T>
<T, A, 10>
<START U>
<U, B, 20>
<T, C, 30>
<START V>
<U, D, 40>
<V, F, 70>
<COMMIT U>
<T, E, 50>
<start CKPT(T, V)>
<end CKPT>
<COMMIT T>
<V, B, 80>
<COMMIT V>
-------------
d. Dùng nhật ký của câu (c): giả sử rằng một sự cố xảy ra ở cuối tập tin nhật ký (ngay
sau bước <COMMIT V>) thì tiến trình khôi phục của DBMS như thế nào khi
dùng phương pháp Redo-Logging?
S và U đã hoàn tất trước <start CKPT>
o Có thể đã được ghi xuống đĩa
o Nếu chưa thì trước khi <end CKPT> cũng được ghi xuống đĩa
<commit T>
o Thực hiện lại T, ghi A=10, C=30, E=50
<commit V>
o Thực hiện lại V, ghi F=70, V=80
Câu 3:
Cây biểu diễn biểu thức truy vấn ban đầu
Cây biểu diễn biểu thức truy vấn sau khi tối ưu