System R thực hiện tối ưu hóa truy vấn tĩnh, đầu vào là một cây đại số quan hệ do phân tích một truy vấn SQL, đầu ra là sơ đồ thực hiện cây đại số quan hệ "tối ưu".
- Dự đoán phương pháp truy nhập tới mỗi quan hệ đơn tốt nhất dựa trên một giả thiết chọn.
- Với mỗi quan hệ R, đánh giá thứ tự kết nối tốt nhất, trong đó R được truy nhập trước tiên sử dụng phương pháp truy nhập quan hệ - đơn tốt nhất của nó. Có hai thuật toán có thể để xét các phép kết nối. Khi kết nối hai quan hệ, quan hệ có các bộ đọc trước gọi là quan hệ ngoài, quan hệ có các bộ được t m thấy tùy theo các giá trị có được từ quan hệ ngoài gọi là quan hệ trong. Quyết định quan trọng với mỗi phương pháp kết nối là xác định hướng truy nhập tới quan hệ trong rẻ nhất.
Phương pháp 1, gọi là các vòng l p lồng nhau, thực hiện tích hai quan hệ. Với mỗi bộ của quan hệ ngoài, các bộ của quan hệ trong thoả mãn giả thiết kết nối được gọi ra để tạo quan hệ kết quả. Nếu không đánh chỉ số, với các quan hệ được lưu trữ theo thứ tự trên n1, n2 bộ bản ghi, thuật toán này có chi phí là n1*n2.
Phương pháp 2, gọi là kết nối trộn, kết nối hai quan hệ đã sắp xếp trên thuộc tính kết nối. Nếu là kết nối bằng, chi phí của việc kết nối hai quan hệ được lưu trữ trên n1 và n2 bộ bản ghi là n1 + n2. V vậy, phương pháp này luôn được chọn khi có kết nối bằng, và khi các quan hệ được sắp xếp trước. Nếu chỉ một ho c không có quan hệ nào được sắp xếp, chi phí của vòng l p lồng nhau được so sánh với chi phí của phương pháp trộn + chi phí sắp xếp. Chi phí sắp xếp n bộ bản ghi là nlog2n.
Thuật toán tối ưu hoá System R (R-QOA), gồm hai vòng l p [7]:
- Chọn phương pháp truy nhập quan hệ đơn tốt nhất tới mỗi quan hệ trong truy vấn.
- Xét tất cả các hoán vị có thể của thứ tự kết nối (có n! hoán vị với n quan hệ) và chọn chiến lược truy nhập tốt nhất đối với câu truy vấn. Các hoán vị
Thuật toán: R-QOA
Input: QT: Cây truy vấn với n quan hệ Output: Output: kết quả thực hiện Begin
for mỗi quan hệ RiQT do begin
for mỗi đường truy nhập APij to Ri do xác định cost(APij)
endfor
best_APi APij với chi phí tối thiểu
endfor
for mỗi order(Ri1,Ri2,...,Rin) với i=1,..., n! do
begin
build strategy(...((best APi1 Ri2) Ri3) ... Rin) tính toán chi phí của chiến lược
endfor
output Chiến lược với chi phí tối thiểu
End. {R-QOA}
Ví dụ 2.8: Thuật toán R-QOA cho câu truy vấn q1 (trong ví dụ 2.6)
Đồ thị kết nối của q1 như sau:
KYSU index trên SHKS HOSODA index trên SHDA
DUAN index trên SHDA và TENDA
Giả sử vòng l p ngoài chọn hướng truy nhập quan hệ đơn tốt nhất sau: KYSU: Quét tuần tự (v không có phép chọn trên KYSU)
HOSODA: Quét tuần tự (v không có phép chọn trên HOSODA)
DUAN: index trên TENDA (v có một phép chọn trên HOSODA dựa trên TENDA)
Cấu tr c động của cây các chiến lược luân phiên như h nh 2.9. Các phép toán có đánh dấu "loại bỏ" sẽ được loại bỏ tự động. Mức 1 của cây chỉ ra phương pháp truy nhập tốt nhất. Mức 2 chỉ ra phương pháp kết nối tốt nhất. Các chiến lược (KYSUDUAN) và (DUANKYSU) bị loại bỏ. Giả sử (KYSU HOSODA) và (HOSODA DUAN) có chi phí cao hơn (HOSODA KYSU) và (DUAN HOSODA) tương ứng. Như vậy ch ng có thể bị loại bỏ, v bằng cách hoán vị có các thứ tự kết nối tương ứng tốt hơn. Mức 3 đưa ra hai khả năng còn lại, thứ tự kết nối tốt nhất là chi phí ít nhất của ((HOSODA KYSU) DUAN) và ((DUAN HOSODA) KYSU). Cuối cùng dựa vào chỉ dẫn trên thuộc tính chọn và truy nhập trực tiếp tới các bộ kết nối của HOSODA và KYSU, chọn phương pháp truy nhập sau:
Hình 2.9: Các thứ tự kết nối luân phiên
2.5. Kết luận
Trong chương này đã tr nh bày hai kỹ thuật tối ưu hóa câu truy vấn dựa trên việc sắp xếp lại các phép toán và phân rã câu truy vấn thành những câu truy vấn con. Việc kết hợp các kỹ thuật với nhau và phát triển trên mô h nh phân tán sẽ được tr nh bày trong chương sau.