Rút gọn cho phân mảnh dọc
Đáp án đúng: A
Phân mảnh dọc là một kỹ thuật trong cơ sở dữ liệu để chia một quan hệ thành các tập hợp thuộc tính (cột) nhỏ hơn. Mục tiêu là để cải thiện hiệu suất truy vấn bằng cách chỉ truy cập các cột cần thiết cho một truy vấn cụ thể. Trong quá trình tối ưu hóa, việc hoán vị phép chiếu (project) và phép chọn (select) có thể giúp giảm số lượng dữ liệu cần xử lý, từ đó rút gọn phân mảnh dọc một cách hiệu quả hơn.
Câu hỏi liên quan
* Đáp án A: Chỉ đề cập đến các mục dữ liệu được đọc, không bao gồm các mục dữ liệu được ghi.
* Đáp án B: Chỉ đề cập đến các mục dữ liệu được ghi, không bao gồm các mục dữ liệu được đọc.
* Đáp án D: Quá chung chung và không chỉ rõ loại mục dữ liệu nào.
Phân tích câu hỏi:
Câu hỏi này kiểm tra kiến thức về khôi phục giao dịch (transaction recovery) trong hệ quản trị cơ sở dữ liệu (DBMS). Cụ thể, nó tập trung vào việc xác định các giao dịch nào cần được khôi phục (rollback) khi một giao dịch khác bị hủy bỏ, dựa trên chuỗi các thao tác đọc/ghi dữ liệu.
Phân tích các phương án:
Giao dịch T1 bị huỷ bỏ.
T2 đọc và ghi đối tượng A sau khi T1 ghi A. Do đó, T2 phụ thuộc vào T1. Vì T1 bị huỷ bỏ, T2 cũng cần được khôi phục để đảm bảo tính nhất quán của dữ liệu.
T3 đọc đối tượng B sau khi T1 ghi đối tượng B. Do đó, T3 phụ thuộc vào T1. Vì T1 bị huỷ bỏ, T3 cũng cần được khôi phục để đảm bảo tính nhất quán của dữ liệu.
T4 đọc đối tượng C không liên quan tới T1. Do đó, T4 không cần được khôi phục.
Vậy, các giao dịch cần được khôi phục là T2 và T3.
Kết luận:
Đáp án đúng là A. T2, T3.
Phân tích:
- R1(A) ... W1(A): Giao dịch T1 đọc và sau đó ghi đối tượng A.
- R2(B) ... W2(B): Giao dịch T2 đọc và sau đó ghi đối tượng B.
- R1(B) ... W1(B): Giao dịch T1 đọc và sau đó ghi đối tượng B.
- R2(C) ... W1(C): Giao dịch T2 đọc và sau đó ghi đối tượng C.
Kiểm tra xung đột ghi-ghi (Write-Write Conflict):
- W1(A) và W2(B) không xung đột trực tiếp.
- W1(B) và W2(B) có thể gây xung đột nếu không có thứ tự cụ thể.
- W1(C) chỉ do T1 ghi.
Kiểm tra xung đột đọc-ghi (Read-Write Conflict) và ghi-đọc (Write-Read Conflict):
- R1(A) và W1(A): Không xung đột.
- R2(B) và W2(B): Không xung đột.
- R1(B) và W1(B): Không xung đột.
- R2(C) và W1(C): Không xung đột.
Xét thứ tự T1 -> T2: Lịch trình có thể tuần tự hóa theo thứ tự này, vì T1 hoàn thành các thao tác trên A và B trước khi T2 bắt đầu các thao tác của mình.
Xét thứ tự T2 -> T1: Lịch trình có thể tuần tự hóa theo thứ tự này, vì T2 hoàn thành các thao tác trên B và C trước khi T1 bắt đầu các thao tác của mình.
Như vậy, lịch trình này tuần tự hóa được.
Phân tích các lựa chọn:
A. Đúng. Bất kỳ giao dịch nào muốn đọc hoặc ghi một mục dữ liệu đều phải khóa mục dữ liệu đó trước. Việc này ngăn các giao dịch khác thay đổi mục dữ liệu trong khi giao dịch hiện tại đang thao tác, tránh xung đột và đảm bảo tính nhất quán.
B. Sai. Giao dịch cần khóa đọc (shared lock) nếu chỉ muốn đọc dữ liệu. Nếu giao dịch muốn thay đổi (ghi) dữ liệu, nó cần khóa ghi (exclusive lock).
C. Sai. Tương tự như B, giao dịch cần khóa ghi (exclusive lock) khi muốn thay đổi dữ liệu. Việc yêu cầu khóa ghi cho mọi truy cập là không hiệu quả và không cần thiết nếu chỉ đọc dữ liệu.
D. Sai. Giải phóng khóa chỉ được thực hiện sau khi giao dịch đã hoàn thành các thao tác cần thiết trên mục dữ liệu và không cần truy cập vào nó nữa. Yêu cầu giải phóng khóa trước khi truy cập là vô nghĩa.
Vậy, đáp án đúng là A.
Phân tích lịch trình: W1(A) W2(A) W1(A) W2(A) W1(A).
Để lịch trình có thể tuần tự hóa được, cần xác định xem có tồn tại một thứ tự thực hiện các giao dịch mà vẫn cho ra kết quả tương đương hay không. Trong trường hợp này, chúng ta có thể thấy rằng việc ghi (Write) vào đối tượng A được thực hiện bởi cả giao dịch T1 và T2 xen kẽ nhau.
Xét các khả năng:
1. Nếu T1 chạy trước T2: W1(A)...W2(A)... thì giá trị cuối cùng của A sẽ là kết quả của W2(A).
2. Nếu T2 chạy trước T1: W2(A)...W1(A)... thì giá trị cuối cùng của A sẽ là kết quả của W1(A).
Trong lịch trình đã cho, W1(A) W2(A) W1(A) W2(A) W1(A), giá trị cuối cùng của A là kết quả của W1(A). Để lịch trình này có thể tuần tự hóa được, thì phải tồn tại một thứ tự các giao dịch mà khi thực hiện tuần tự theo thứ tự đó, kết quả cuối cùng của A cũng phải là W1(A). Tuy nhiên, không có thứ tự nào thỏa mãn điều kiện này. Bất kể chúng ta chọn thứ tự nào (T1 trước T2, hoặc T2 trước T1), chúng ta không thể đảm bảo giá trị cuối cùng của A là kết quả của W1(A). Do đó, lịch trình này không thể tuần tự hóa được.

Bộ Đồ Án Tốt Nghiệp Ngành Trí Tuệ Nhân Tạo Và Học Máy

Bộ 120+ Đồ Án Tốt Nghiệp Ngành Hệ Thống Thông Tin

Bộ Đồ Án Tốt Nghiệp Ngành Mạng Máy Tính Và Truyền Thông

Bộ Luận Văn Tốt Nghiệp Ngành Kiểm Toán

Bộ 370+ Luận Văn Tốt Nghiệp Ngành Kế Toán Doanh Nghiệp

Bộ Luận Văn Tốt Nghiệp Ngành Quản Trị Thương Hiệu
ĐĂNG KÝ GÓI THI VIP
- Truy cập hơn 100K đề thi thử và chính thức các năm
- 2M câu hỏi theo các mức độ: Nhận biết – Thông hiểu – Vận dụng
- Học nhanh với 10K Flashcard Tiếng Anh theo bộ sách và chủ đề
- Đầy đủ: Mầm non – Phổ thông (K12) – Đại học – Người đi làm
- Tải toàn bộ tài liệu trên TaiLieu.VN
- Loại bỏ quảng cáo để tăng khả năng tập trung ôn luyện
- Tặng 15 ngày khi đăng ký gói 3 tháng, 30 ngày với gói 6 tháng và 60 ngày với gói 12 tháng.