Chương 2 MỘT SỐ NGUYÊN LÝ CHUNG CỦA TỐI ƯU HÓA TRUY VẤN
2.1 Mục tiêu của bài toán xử lý truy vấn [4]
Bộ xử lý truy vấn có nhiệm vụ phân tích, biến đổi các câu truy vấn cấp cao (ở dạng các phép tính quan hệ) thành một câu truy vấn tương đương ở cấp thấp hơn (dạng đại số quan hệ).
Với câu truy vấn cấp thấp này việc cài đặt các chiến lược thực thi sẽ được thực hiện.
Việc biến đổi câu truy vấn phải đáp ứng được cả tính đúng đắn, lẫn tính hiệu quả.
Một biến đổi được coi là đúng đắn nếu câu truy vấn cấp thấp cho cùng một kết quả như câu truy vấn cấp cao. Việc đưa ra được một chiến lược thực thi thích hợp để đạt được tính hiệu quả lại là một bài toán khó. Một câu truy vấn cấp cao có thể được biến đổi thành nhiều câu truy vấn cấp thấp tương đương, và mỗi một chiến lược thực thi này lại tiêu tốn tài nguyên hệ thống rất khác nhau. Việc khó khăn là phải tìm ra một chiến lược nhằm hạ thấp tối đa việc tiêu dùng tài nguyên.
Thí dụ 2.1:
Xét CSDL đã cho ở thí dụ 1.1. Với câu truy vấn “Tìm tên các nhân viên đang quản lý một dự án có thời gian lớn hơn 37 tháng”
SELECT TENNV
FROM NHANVIEN, PHANCONG
WHERE NHANVIEN.MSNV=PHANCONG.MSNV AND TGIAN > 37
Với câu truy vấn trên chúng ta có thể có các biểu thức đại số quan hệ tương đương như sau:
)) (
( TGIAN 37 NHANVIEN.MSNV PHANCONG.MSNV NHANVIEN PHANCONG
TENNV ×
∏ σ > ∧ =
Và: ∏TENNV(NHANVIEN ><MSNV (σTGIAN>37(PHANCONG)))
Tất nhiên do trong biểu thức đại số thứ hai không có chứa tích Descartes nên sẽ tiêu tốn ít tài nguyên hơn nên sẽ được giữ lại để sử dụng. Trong môi trường tập trung, chiến lược thực thi truy vấn có thể được diễn tả chính xác bằng một mở rộng của đại số quan hệ. Nhiệm vụ chính của bộ xử lý truy vấn trong môi trường tập trung là phải chọn ra một câu truy vấn dạng biểu thức đại số tốt nhất trong các câu truy vấn tương đương. Đây là một bài toán phức tạp khi số lượng các quan hệ lớn, nên nói chung là chúng ta chỉ hướng đến là tìm được một lời giải tốt (gần tối ưu).
Trong môi trường phân tán, các biểu thức đại số quan hệ không đủ để diễn tả các chiến lược thực thi. Nó phải được bổ sung thêm các phép toán trao đổi dữ liệu giữa các trạm. Và cùng với việc chọn các phép toán đại số quan hệ, thì bộ xử lý truy vấn
phân tán cũng phải chọn các trạm tốt nhất để xử lý dữ liệu. Do vậy việc tìm ra lời giải cho bài toán chiến lược thực thi trở nên khó khăn hơn nhiều.
Xét lại ví dụ trên trong môi trường phân tán:
Thí dụ 2.2:
Các mảnh được cấp phát tại các trạm 1, 2, 3, 4 và kết quả được truy xuất tại trạm 5 Trạm 1: PHANCONG1 =σMSNV≤"E3"(PHANCONG)
Trạm 2: PHANCONG2 =σMSNV>"E3"(PHANCONG) Trạm 3: NHANVIEN1 =σMSNV≤"E3"(NHANVIEN) Trạm 4: NHANVIEN1 =σMSNV≤"E3"(NHANVIEN) Ta có chiến lược A tại Trạm 5:
Và chiến lược B như sau:
) (
)
(NHANVIEN 1∪NHANVIEN 2 MSNV TGIAN 37 PHANCONG 1∪PHANCONG 2
= >< σ >
PHANCONG1 PHANCONG2 NHANVIEN1 NHANVIEN2
Để đánh giá được việc tiêu dùng tài nguyên của hai chiến lược này, ta dùng mô hình chi phí sau:
Giả sử độ lớn của quan hệ NHANVIEN và PHANCONG tương ứng là 400 và 1000 bộ (tuple) và chi phí truy xuất bộ (tuple access cost) tupacc là một đơn vị, chi phí truyền bộ (tuple transfer cost) tuptrans là 10 đơn vị
Với phương án A ta có:
1. Tạo ra PHANCONG’: (10+10)*tupacc 20 2. Truyền PHANCONG’
đến vị trí chứa NHANVIEN
(10+10)*tuptrans 200
3. Tạo NHANVIEN’ (10+10)*tupacc*2 40 4. Truyền NHANVIEN’
đến vị trí 5 (10+10)*tuptrans 200
Tổng chi phí 460
Đối với phương án B ta có:
1. Truyền NHANVIEN
đến vị trí 5 400*tuptrans 4000
2. Truyền PHANCONG đến vị trí 5
1000*tuptrans 10000
3. Tạo PHANCONG’ 1000*tupacc 1000 4. Nối NHANVIEN và
PHANCONG’
400*20*tupacc 8000
Tổng chi phí 23000
Ở phương án B ta thấy rõ ràng là tổng chi phí lớn hơn rất nhiều so với phương án A.
Như đã nêu ở trên, mục tiêu của việc xử lý truy vấn trong môi trường phân tán là biến đổi câu truy vấn cấp cao trên CSDL PT thành các câu truy vấn (ở ngôn ngữ cấp thấp) trên các CSDL cục bộ.
Và một việc quan trọng của xử lý truy vấn là vấn đề tối ưu hóa. Trong các chiến lược thực thi (kết quả của các quá trình biến đổi) thì một chiến lược sử dụng các tài nguyên của hệ thống tối ưu nhất thì sẽ được giữ lại.
Chỉ số đánh giá mức sử dụng hệ thống là tổng chi phí (total cost) được tính toán như sau:
Tổng chi phí= chi phí xuất nhập + chi phí CPU + chi phí truyền.
Với chi phí xuất nhập là chi phí/thời gian cần thiết cho các thao tác xuất nhập.
Chi phí CPU là chi phí/thời gian phải trả khi thực hiện các thao tác trên dữ liệu trong bộ nhớ chính.
Tuy nhiên cũng có cách đánh giá khác để đánh giá việc xử lý truy vấn là thời gian đáp ứng (response time).
Các yếu tố này có thể được đánh giá khác nhau trong các môi trường phân tán khác nhau. Trong môi trường tập trung hai thành phần đầu tiên (trong biểu thức tính tổng chi phí) là những yếu tố duy nhất được đề cập đến khi tính toán chi phí của câu truy vấn. Trong môi trường mạng WAN thì yếu tố truyền tin sẽ được quan tâm đến nhiều hơn, do giả thiết rằng chi phí truyền lớn hơn rất nhiều chi phí xử lý cục bộ.
Trên thực tế thì các nghiên cứu gần đây đều xem xét đến việc tổ hợp của cả ba thành phần trên bởi vì chúng đều có giá trị đáng kể trong tổng chi phí ước lượng của câu truy vấn.