Phương pháp này quan tâm đến kích thước dữ liệu và phải tính toán chi phí thời gian thực hiện mỗi phép toán.1.Quy trình thực hiện câu truy vấn Bộ xử lý truy vấn Query processor cung cấp
Tiền sử lý câu truy vấn (Preprocessor)
Hình sau minh họa tổng quát quá trình tiền xử lý, trong đó mỗi phần của cây tương ứng với phần trong câu truy vấn SQL.
VD:Vẽ cây phân tích cú pháp (query expression tree) cho đề sau :
NHANVIEN (manv, tenv, ngaysinh, phai, luong)
THAMGIA (mada, manv, ngaybatdau, ngayketthuc)
Liệt kê mã đề án mà nhân viên tham gia có lương > 2.000.000
3.Chuyển đổi từ SQL sang ĐSQH
Query block: khối truy vấn đơn vị SELECT-FROM-WHERE-GROUP- BY-HAVING dùng để chuyển sang ĐSQH
Truy vấn lồng: tách thành khối lệnh ghép thành các khối truy vấn đơn vị (query blocks)
Tối ưu hóa câu truy vấn
Giải thuật heuristic
Tối ưu hóa truy vấn thông qua các quy tắc heuristics là quá trình sử dụng các biểu thức tương đương nhằm chuyển đổi cây truy vấn ban đầu thành cây truy vấn cuối cùng được tối ưu.
Thuật toán tối ưu hóa bằng Heurictis thực hiện như sau:
Bước 1: Áp dụng quy tắc 1 để phân rã bất kỳ phép chọn nào có điều kiện hội thành một chuỗi các phép chọn, sau đó chuyển các phép chọn này xuống các nhánh khác của cây.
Để tối ưu hóa truy vấn, bước 2 là sử dụng các quy tắc QT 2, 4, 6 và 10, tức là áp dụng tính giao hoán của phép chọn với các phép toán khác Điều này bao gồm việc chuyển mỗi phép chọn xuống sâu nhất trong cây truy vấn khi có thể.
- Bước 3: Sử dụng QT 9 để tái tổ chức cây cú pháp sao cho phép chọn được thực hiện có lợi nhất (chọn ít nhất) —>Heurictis
- Bước 4: Kết hợp một phép tích đề các với một phép chọn thành một phép nối, nếu điều kiện của phép chọn tương ứng với phép nối.
Bước 5: Áp dụng các quy tắc 3, 4, 7 và 11 để thực hiện các phép chiếu và tính giao hoán giữa các phép chiếu với các phép toán khác Phân rã và di chuyển các danh sách thuộc tính chiếu xuống dưới cây truy vấn nhằm tối ưu hóa và tạo ra các phép chiếu mới khi cần thiết.
- Bước 6: Tập trung các phép chọn.
- Bước 7: Sử dụng QT 3 để loại những phép chiếu vô ích.
VD: Liệt kê họ tên NHANVIEN sinh sau năm 1960 và làm dự án ‘ABC’
Ngân-hàng - Ngân hàng cơ sở dữ liệu…
Unit 1 My new school Lesson 1 Getting…
6 Đề cương Cơ sở dữ liệu- sau nghiệm…
Chức năng đăng nhập - Chức năng…
Các bước chuyển đổi một cây truy vấn trong suốt quá trình tối ưu hóa bằng cách sử dụng giải thuật heurictis:
Xử lý trong môi trường tập trung
4.2.1.a So sánh xử lý truy vấn tập trung và phân tán
- Chọn một truy vấn đại số quan hệ tốt nhất trong số tất cả các truy vấn đại số tương đương.
- Các chiến lược xử lý truy vấn có thể biểu diễn trong sự mở rộng của đại số quan hệ.
- Kế thừa chiến lược xử lý truy vấn như môi trường tập trung.
- Còn phải quan tâm thêm :
Các phép toán truyền dữ liệu giữa các trạm;
Chọn các trạm tốt nhất để xử lý dữ liệu;
Sơ đồ chung cho xử lý truy vấn trong môi trường tập trung:
Sơ đồ phân lớp chung cho xử lý truy vấn phân tán:
4.2.1.b Chiến lược tối ưu hóa trong CSDL tập trung
* Thuật toán INGRES Ý tưởng thuật toán: Thuật toán tổ hợp hai giai đoạn phân rã và tối ưu hoá.
Đầu tiên, hãy phân rã câu truy vấn dạng phép toán quan hệ thành các phần nhỏ hơn Quá trình này giúp chia câu truy vấn thành một chuỗi các truy vấn, mỗi truy vấn đều có một quan hệ chung duy nhất.
• Sau đó mỗi câu truy vấn đơn quan hệ được xử lí bởi một “ thể truy vấn xử lý một biến " (one variable query processor-OVQP)
OVQP tối ưu hóa việc truy xuất dữ liệu đến một quan hệ bằng cách áp dụng phương pháp truy xuất hiệu quả nhất Đầu tiên, OVQP thực hiện các phép toán đơn ngôi và giảm thiểu kích thước của các kết quả trung gian thông qua các kỹ thuật tách (detachment) và thay thế (substitution).
Kí hiệu được sử dụng để chỉ câu truy vấn q, trong đó câu truy vấn này được phân rã thành hai câu truy vấn con Câu truy vấn con thứ nhất được thực hiện trước, và kết quả của nó sẽ được sử dụng cho câu truy vấn con thứ hai.
• Phép tách: OVQP sử dụng để tách câu truy vấn q thành các truy vấn q’—q” dựa trên một quan hệ chung là kết quả của q’.
Nếu câu truy vấn 4 được biểu diễn bằng SQL có dạng: q: SELECT R2.A2, R3.A3‚ , Rn.An
Câu truy vấn có thể được phân rã thành hai câu truy vấn con, q' và q", thông qua phép tách dựa trên quan hệ chung R1 Quan hệ R1 chứa các thuộc tính A1 và A’1, đồng thời là cơ sở để tách câu truy vấn ban đầu thành hai phần Quá trình tách này cho phép thực hiện câu truy vấn q' với nội dung "SELECT R1.A1 INTO R’1", từ đó tạo ra một tập kết quả mới R’1.
Trong đó R'1 là một quan hệ tạm thời chứa các thông tin cần thiết để thực hiện tiếp tục câu truy vấn: q”: SELECT R2A2,…,RnAn
VD: Xét ví dụ minh họa của một công ty phần mềm
Xét câu truy vấn “ Cho biết tên của các nhân viên đang làm việc trong dự án có tên CSDL"
AND TENDA = "CSDL" được tách thành , trong đó TGIAN1 là quan hệ trung gian.
WHERE TENDA = "CSDL" q‘: SELECT E.TENNV
Các bước tách tiếp theo cho q'có thể tạo ra:
Truy vấn đã được đơn giản hóa thành chuỗi truy vấn Đây là loại truy vấn đơn quan hệ và có thể được thực hiện bởi OVQP Tuy nhiên, không phải tất cả các truy vấn đều thuộc loại đơn quan hệ, và một số không thể được rút gọn thêm thông qua phép tách.
Các câu truy vấn đa quan hệ không thể tách tiếp được nữa (chẳng hạn và ) được gọi là bất khả giản (irreducible)
Các truy vẫn bất khá giản được biến đổi thành câu truy vẫn đơn quan hệ nhờ phép thế bộ (tuple substitution).
Phép thế bộ là một kỹ thuật trong truy vấn n-quan hệ, trong đó các bộ của một biến được thay thế bằng các giá trị của chúng, từ đó tạo ra một tập hợp các truy vấn n-1 biến Quy trình thực hiện phép thế bộ giúp tối ưu hóa và mở rộng khả năng truy vấn dữ liệu.
• Chọn một quan hệ trong truy vấn q để thay thế, gọi R1 là quan hệ đó.
Mỗi bộ trong R1 thay thế các thuộc tính được tham chiếu trong câu truy vấn q bằng các giá trị thực tế, tạo ra câu truy vấn mới q‘ với (n-1) quan hệ Do đó, số lượng câu truy vấn q' được tạo ra từ phép thế bộ là card(R1).
Phép thế bộ cho phép thay thế một truy vấn q(R1, R2, , Rn) bằng q’(R2, R3, , Rn) kết hợp với R1 Do đó, mỗi bộ truy vấn con sẽ được xử lý đệ quy thông qua phép thế cho đến khi không còn khả năng giản lược.
Ví dụ minh họa: Xét tiếp câu truy vấn
Quan hệ được xác định bởi biến TGIAN2, chạy trên thuộc tính duy nhất MANV Giả sử rằng nó chỉ bao gồm hai bộ dữ liệu: và Việc thay thế TGIAN2 sẽ tạo ra hai câu truy vấn con đơn quan hệ.
Sau đó chúng có thể được OVQP quản lý và sử dụng.
• Thuật toán tối ưu hoá INGRES (được gọi là INGRES - QUA) sẽ xử lý đệ qui cho đến khi không còn câu truy vấn đa quan hệ nào nữa.
• Thuật toán có thể được áp dụng cho các phép chọn và các phép chiếu ngay khi có thể sử dụng kỹ thuật tách.
Kết quả từ câu truy vấn đơn quan hệ được lưu trữ trong các cấu trúc dữ liệu, giúp tối ưu hóa cho các truy vấn tiếp theo, bao gồm cả các phép nối Những kết quả này sẽ được sử dụng bởi OVQP.
• Các câu truy vấn bất khả giản còn lại sau phép tách sẽ được sử lý bằng phép thế bộ.
Câu truy vấn bất khả giản, ký hiệu là MRQ’, có mối quan hệ nhỏ nhất với lực lượng của nó, được xác định dựa trên kết quả của câu truy vấn trước đó và sẽ được lựa chọn để thay thế.
Input: MRQ: câu truy vấn đa quan hệ (có n quan hệ)
Output: Câu truy vấn tối ưu
Output run(MRQ) {thực hiện câu truy vấn một quan hệ}
Else {Tách MRQ thành m tr vẫn một quan hệ và một tr.vấn đa quan hệ}
Output' run(ORQ) {thực hiện ORQ}
Output output output' {trộn tất cả các kết quả lại}
R–CHOOSE_VARIABLE(MRQ’) {R được chọn cho phép thế bộ}
MRQ"