Các kỹ thuật tối ƣu hóa tập trung

Một phần của tài liệu tìm hiểu về tối ưu hóa truy vấn trong cơ sở dữ liệu phân tán (Trang 30 - 34)

Phần này sẽ tr nh bày 2 kỹ thuật tối ưu hoá câu truy vấn đối với hệ tập trung. Sự biểu diễn này là điều kiện để tối ưu hóa câu truy vấn phân tán với ba lý do:

- Một câu truy vấn phân tán được biến đổi thành các câu truy vấn địa phương được xử lý theo cách tập trung.

- Các kỹ thuật tối ưu hoá câu truy vấn phân tán thường là sự mở rộng các kỹ thuật đối với hệ tập trung.

- Tối ưu hoá tập trung thường là vấn đề đơn giản, sự tối thiểu hoá chi phí truyền thông dẫn đến tối ưu hoá câu truy vấn phân tán phức tạp hơn.

2.4.1. Thuật toán INGRES

INGRES sử dụng thuật toán tối ưu hoá câu truy vấn động, chia một truy vấn phép tính quan hệ thành các truy vấn nhỏ hơn. Một truy vấn đa biến đầu tiên được phân tích thành một dãy các truy vấn con có một biến duy nhất chung, mỗi truy vấn con được dựa vào kết quả của truy vấn con trước đó. Sau đó, mỗi truy vấn con được xử lý bởi "bộ xử lý truy vấn một biến" (OVQP: one-variable query processor). OVQP tối ưu truy nhập tới một quan hệ đơn, bằng cách lựa chọn phương pháp truy nhập tốt nhất (chỉ số, quét tuần tự). Ví dụ: với tân từ dạng <A = value> th nên dùng một chỉ số trên A; với tân từ dạng <Avalue> thì nên dùng quét tuần tự.

Câu truy vấn q được phân tích thành hai câu truy vấn con qi-1 và qi, ký hiệu qi-1 qi, nghĩa là qi-1 được thực hiện trước và kết quả của nó được sử dụng bởi qi. Bộxử lý câu truy vấn INGRES phân tích q thành n câu truy vấn q1q2q3...qn. Sự phân tích này sử dụng hai kỹ thuật cơ bản phân tách và thay thế.

Nếu q biểu diễn dạng:

FROM R1 V1, R2 V2,..., Rn Vn WHERE P1(V1.Ai')

AND P2(V1.A1, V2.A2,..., Vn.An)

Trong đó: Câu lệnh from xác định các biến bộ (ví dụ V1) trên các quan hệ (ví dụ R1); Ai, Ai' là danh sách các thuộc tính của quan hệ Ri; P1 là tân từ một đối liên quan đến các thuộc tính của R1; P2 là tân từ nhiều đối liên quan đến các thuộc tính của R1, ...,Rn. Một truy vấn như vậy có thể phân tách thành hai truy vấn con q' q'' bằng cách phân tích các biến chung V1:

q': SELECT V1.A1 INTO R1' FROM R1 V1

WHERE P1(V1.A1')

q": SELECT V2.A2, V3.A3,..., Vn.An FROM R1' V1, R2 V2,..., Rn Vn WHERE P2(V1.A1, V2.A2,..., Vn.An)

Trong đó: R1' là quan hệ tạm thời bao hàm các thông tin cần thiết cho tiếp tục truy vấn.

Ví dụ 2.6: Xét lược đồ quan hệ sau:

KYSU(SHKS, TENKS, NGHE)

HOSODA(SHKS, SHDA, TRNH,THOIGIAN) DUAN(SHDA, TENDA, NGANSACH)

Trong đó:

SHKS: Số hiệu kỹ sư TENKS: Tên kỹ sư NGHE: Nghề nghiệp SHDA: Số hiệu dự án

Câu truy vấn: "T m tên kỹ sư làm việc cho dự án CAD/CAM" q1 : SELECT KYSU.TENKS FROM KYSU,HOSODA,DUAN WHERE KYSU.SHKS=HOSODA.SHKS AND HOSODA.SHDA=DUAN.SHDA AND TENDA=“CAD/CAM”

q1 được thay bởi q11  q', trong đó JTG là quan hệ trung gian: q11: SELECT DUAN.SHDA INTO JTG

FROM DUAN

WHERE TENDA=“CAD/CAM” q': SELECT KYSU.TENKS

FROM KYSU, HOSODA, JTG

WHERE KYSU.SHKS=HOSODA.SHKS AND HOSODA.SHDA=JTG.SHDA

q' được phân tách tiếp như sau, trong đó GTG là quan hệ trung gian: q12: SELECT HOSODA.SHKS INTO GTG;

FROM HOSODA, JTG

WHERE HOSODA.SHDA=JTG.SHDA q13: SELECT KYSU.TENKS

FROM KYSU,GTG

WHERE KYSU.SHKS=GTG.SHKS (adsbygoogle = window.adsbygoogle || []).push({});

Như vậy, q1 có thể biến đổi thành q11q12q13. Câu truy vấn q11 là đơn biến và có thể thực hiện bởi OVQP, q12 và q13 không là đơn biến và không thể r t gọn bởi phân tách.

Một truy vấn con đa biến, không thể tiếp tục phân tách (ví dụ q12, q13), được biến đổi thành tập các truy vấn con có ít nhất một biến bởi sự thay thế bộ. Cho một câu truy vấn q n - biến, các bộ của một biến được thay thế bởi

các giá trị của ch ng, do đó đưa ra một bộ của các truy vấn (n - 1) - biến. Sự thay thế bộ tiến hành như sau:

- Một biến trong q được chọn để thay thế bộ, ví dụ V1

- Với mỗi bộ t1i trong R1, các thuộc tính thuộc V1 trong q được thay thế bởi các giá trị thực của ch ng trong t1i, do đó sinh ra truy vấn q' với n - 1 biến.

Như vậy, tổng số các truy vấn q' được đưa ra bởi thay thế bộ là card(R1). Sự thay thế bộ có thể tóm tắt như sau:

q(V1, V2, V3, ....,Vn) được thay thế bởi {q'(t1i, V2, V3, ....,Vn), t1iR1}

Ví dụ 2.7: Xét truy vấn q13

q13: SELECT KYSU.TENKS

FROM KYSU,GTG

WHERE KYSU.SHKS=GTG.SHKS

Quan hệ được xác định bởi biến GTG trên một thuộc tính đơn (SHKS). Giả sử nó chỉ chứa hai bộ <E1> và <E2>. Sự thay thế của GTG sinh ra hai câu truy vấn con một biến:

q131: SELECT KYSU.TENKS

FROM KYSU

WHERE KYSU.SHKS=“E1” q132: SELECT KYSU.TENKS

FROM KYSU

WHERE KYSU.SHKS=“E2” Truy vấn có thể xử lý bởi VOQP

Sau đây là thuật toán tối ƣu hóa câu truy vấn của INGRES, gọi là INGRES-QOA

Thuật toán: INGRES-QOA

Input: MVQ: Truy vấn đa biến với n biến Output: output: Câu truy vấn tối ưu

output

if n=1 then

outputrun(MVQ) {Thực hiện truy vấn một biến}

else begin {tách MVQ thành m truy vấn một biến và một truy vấn nhiều biến}

OVQ1,...,OVQm, MVQ'MVQ

for i 1 to m do begin

output' run(OVQi) {Thực thi OVQi}

outputoutput output' {hợp tất cả các kết quả}

endfor

VCHOOSE-VARIABLE(MVQ') {V được chọn cho phép thế bộ} (adsbygoogle = window.adsbygoogle || []).push({});

for mỗi bộ t V do begin

MVQ" thay thế các giá trị cho t trong MVQ' output INGRES-QOA(MVQ") {gọi đệ quy} output output output {hợp tất cả các kết quả}

end Endif

End. {INGRES-QOA}

Một phần của tài liệu tìm hiểu về tối ưu hóa truy vấn trong cơ sở dữ liệu phân tán (Trang 30 - 34)