Tối ưu hóa truy vấn trong môi trường tập trung

Một phần của tài liệu (LUẬN văn THẠC sĩ) cơ sở dữ liệu phân tán và tối ưu hoá vấn tin luận văn ths công nghệ thông tin 1 01 10 (Trang 56 - 63)

Chương 2 MỘT SỐ NGUYÊN LÝ CHUNG CỦA TỐI ƯU HÓA TRUY VẤN

2.5 Tối ưu hóa truy vấn phân tán

2.5.2 Tối ưu hóa truy vấn trong môi trường tập trung

Ở phần này, hai kỹ thuật tối ưu thông dụng nhất trong các hệ thống tập trung sẽ được giới thiệu. Đây là tiền đề cho các kỹ thuật tối ưu phân tán vì ba lý do:

™ Câu truy vấn phân tán phải được dịch thành các câu truy vấn cục bộ, và được xử lý theo phương pháp tập trung.

™ Các kỹ thuật tối ưu phân tán thường là các mở rộng của kỹ thuật tập trung.

™ Tối ưu hóa tập trung thường đơn giản hơn, do không cần phải quan tâm đến việc phải hạ thấp chi phí truyền dữ liệu.

Hai thuật toán được giới thiệu ở đây được sử dụng bởi 2 hệ thống CSDL:

INGRES và System R, và cả hai hệ thống này đều có phiên bản phân tán.

2.5.2.1 Thuật toán INGRES

INGRES sử dụng thuật toán tối ưu hóa động, nó tách dần câu truy vấn dạng phép tính quan hệ thành các phần nhỏ hơn. Nó là tổ hợp của hai giai đoạn phân

truy vấn “đơn biến” (đơn quan hệ)

™ Mỗi câu truy vấn được xử lý bởi bộ xử lý truy vấn một biến (OVQP - one variable query processor) bằng cách dùng heuristic để chọn một phương án thực thi, sắp xếp các thứ tự còn lại dựa trên kích cỡ của quan hệ trung gian.

Trong INGRES ngôn ngữ QUEL được sử dụng, nhưng để tạo ra sự nhất quán, thì chúng ta sử dụng tập lệnh SQL để trình bày các thí dụ.

Phân rã:

Biến đổi câu truy vấn q n-biến thành một tập tuần tự q1 →q2 →...→qn, trong đó qi sử dụng kết quả của qi−1

Kỹ thuật tách. Câu truy vấn q được phân tách thành q'→q" dựa trên một quan hệ chung là kết quả của q':

Thay thế bộ. Trước tiên chọn một quan hệ để thay thế, gọi R1 là quan hệ đó.

Với mỗi bộ t1 trong R1, các thuộc tính được tham chiếu trong qđược thay thế bằng các giá trị thực sự trong t1:

1 1 2

2 1 2

1, ,..., ) ( '( , , ,..., ),

(V V V q t V V V t R

q nn

Vì vậy tổng số các câu truy vấn q' được sinh ra bởi phép thế bộ là card(R1). Thí dụ 2.17:

Vẫn với các quan hệ của thí dụ 1.1, cho câu truy vấn: “ cho biết tên của các nhân viên đang làm việc cho dự án CAD/CAM”

FROM NHANVIEN, PHANCONG, DUAN

WHERE NHANVIEN.MSNV=PHANCONG.MSNV

AND PHANCONG.MSDA=DUAN.MSDA

AND DUAN.TENDA=”CAD/CAM”

q11: SELECT DUAN.MSDA INTO JVAR

FROM DUAN

WHERE DUAN.TENDA=”CAD/CAM”

'

q: SELECT NHANVIEN.TENNV

FROM NHANVIEN, PHANCONG, JVAR

WHERE NHANVIEN.MSNV=PHANCONG.MSNV

AND PHANCONG.MSDA=JVAR.MSDA

q12: SELECT PHANCONG.MSNV INTO GVAR FROM PHANCONG, JVAR

WHERE PHANCONG.MSDA=JVAR.MSDA q13: SELECT NHANVIEN.TENNV

FROM NHANVIEN, GVAR

WHERE NHANVIEN.MSNV=GVAR.MSNV

Áp dụng phép thay thế bộ ta có: q11 là câu truy vấn “đơn biến”, như vây q12và q13 sẽ là đối tượng để thay thế. Với giả sử GVAR chỉ chứa hai bộ <E1> và

<E2> thì q13 sẽ đươc thay thế như sau:

q131: SELECT NHANVIEN.TENNV FROM NHANVIEN

WHERE NHANVIEN.MSNV=”E1”

q132: SELECT NHANVIEN.TENNV FROM NHANVIEN

WHERE NHANVIEN.MSNV=”E2”

quy, áp dụng các phép chọn, các phép chiếu ngay khi có thể bằng kỹ thuật tách.

Các câu truy vấn bất khả giản còn lại sau phép tách sẽ được xử lý bằng phép thay thế bộ. Các truy vấn đơn biến (đơn quan hệ) được tạo ra sẽ do OVQP xử lý, chọn ra đường truy xuất tốt nhất đến quan hệ theo điều kiện tìm kiếm trang truy vấn.

INPUT: MRQ câu truy vấn “đa biến” có n quan hệ OUTPUT: kết quả thực hiện

Begin

φ

output if n=1 then

) (MRQ run

output {thực hiện câu truy vấn 1 quan hệ}

else begin

{tách MRQ thành m truy vấn một quan hệ và một truy vấn đa quan hệ}

MRQ MRQ

ORQ

ORQ1,..., m, '← for i←1 to m do begin

) ( ' run ORQi

output {thực hiện ORQi} '

output output

output← ∪ {trộn tất cả các kết quả lại}

end-for

) ' ( _VARIABLE MRQ CHOOSE

R {R được chọn cho phép

thế bộ}

for mỗi bộ tR do begin

"

MRQ thay giá trị cho t trong MRQ’

) ( ' INGRES QOA MRQ"

output← − {gọi đệ qui}

' output output

output← ∪ {trộn tất cả các kết quả lại}

end-for end-if

End.

Với MRQ là truy vấn đa quan hệ (MultiRelation Query), và ORQ là truy vấn một quan hệ (One-Relation Query).

2.5.2.2 Thuật toán của System R

System R sử dụng thuật toán tối ưu hóa tĩnh dựa trên tìm kiếm vét cạn nhờ sử dụng các số liệu thống kê về CSDL.

Nguyên liệu của bộ tối ưu hóa của System R là cây truy vấn do phân rã câu truy vấn SQL mang lại.

ưu”.

Thay vì thực hiện một cách có hệ thống phép chọn, phép nối như trong INGRES, System R chỉ thực hiện điều đó nếu nó dẫn đến một kết quả tốt hơn.

Bộ tối ưu sẽ gán một chi phí (theo thời gian) cho mỗi cây dự tuyển và chỉ giữ lại cây có chi phí thấp nhất. Những cây dự tuyển có được bằng hoán vị các thứ tự nối của n quan hệ trong câu truy vấn nhờ các quy tắc biến đổi hoán vị, kết hợp. Và để hạn chế chi phí dành cho việc tối ưu hóa, số lượng các cây được giảm bớt bằng kỹ thuật quy hoạch động, chỉ có mối nối có chi phí thấp nhất mới được giữ lại, ngoài ra những chiến lược/phương án thực thi phải lấy tích Descartes đều bị loại bỏ ngay có thể.

Thuật toán tối ưu gồm hai bước chính.

™ Dự đoán phương pháp tốt nhất để truy xuất đến mỗi quan hệ dựa trên một vị từ chọn lựa

™ Đối với mỗi quan hệ R:

9 Thứ tự nối tốt nhất sẽ được ước lượng 9 Xác định chi phí của mỗi nối

9 Chọn nối có chi phí thấp nhất

Với việc thực thi như vậy có cơ sở cho việc tìm được phương án thực thi tốt.

Khi xét các nối, đối với nối của hai quan hệ thì quan hệ được đọc trước gọi quan hệ ngoài (external relation), còn quan hệ kia, là quan hệ có các bộ được tìm dựa theo các giá trị có được từ quan hệ ngoài sẽ được gọi là quan hệ trong (internal relation). Việc chọn phương pháp nối ở đây là xác định đường truy xuất có chi phí thấp nhất đến quan hệ trong.

Có hai thuật toán, và một trong hai sẽ là tối ưu trong ngữ cảnh đã cho.

™ Phương pháp thứ nhất “vòng lặp lồng” (nested loops) for each bộ trong quan hệ ngoài (lực lượng n1)

for each bộ trong quan hệ trong (lực lượng n2) Nối hai bộ nếu điều kiện nối được thỏa mãn end

end

trên thuộc tính nối.

Với mỗi bộ của quan hệ ngoài, từng bộ của quan hệ trong thỏa mãn vị từ nối sẽ được truy xuất lần lượt để tạo ra quan hệ kết quả. Một chỉ mục trên thuộc tính nối là một đường truy xuất rất hiệu quả đối với quan hệ trong.

™ Phương pháp thứ hai “nối trộn” (merge join) 9 Sắp xếp quan hệ theo thuộc tính nối 9 Trộn hai quan hệ

Nếu điều kiện nối là đẳng thức, thì độ phức tạp/chi phí tương ứng với

2

1 n

n + .

Nếu một trong hai quan hệ đều chưa được sắp xếp, thì thuật toán “vòng lặp lồng” sẽ có chi phí tăng đáng kể so với phương pháp “nối trộn”. Nói chung thuật toán nối trộn sẽ hữu ích khi cần nối các quan hệ lớn.

Một phiên bản đơn giản của thuật toán tối ưu hóa sẽ được trình bày ở đây.

Thuật toán gồm hai vòng lặp:

™ Trước tiên chọn phương pháp truy xuất tốt nhất đến mỗi quan hệ trong câu truy vấn

™ Xét tất cả các hoán vị có thể của các thứ tự kết nối (có n! hoán vị cho n quan hệ). Các hoán vị được tạo ra bởi cấu trúc động.

Thuật toán tối ưu hóa R (R-QOA) INPUT: QT cây truy vấn có n quan hệ OUTPUT: kết quả thực thi

Begin

for mỗi quan hệ RiQT do begin

for mỗi đường truy xuất APij đến Ri do Xác định cost(APij)

end-for

ij

i AP

AP

best_ ← có chi phí nhỏ nhất

begin

xây dựng strategy(...((best_APi1><Ri2)><Ri3)><...><Rin)

tính chi phí của strategy end-for

strategy

output có chi phí nhỏ nhất End.

Thí dụ 2.18:

Sử dụng câu truy vấn q1 (trong thí dụ 2.17). Giả sử :

™ Giả sử NHANVIEN có chỉ số trên MSNV

™ PHANCONG có chỉ số trên MSDA

™ DUAN có chỉ số trên MSDA và một chỉ số khác trên TENDA

Hình 2. 20 Đồ thị nối của câu truy vấn q1

Giả sử rằng vòng lặp đầu tiên của thuật toán chọn ra các đường truy xuất một quan hệ như sau:

™ NHANVIEN: truy cập tuần tự, do không có phép chọn nào trên NHANVIEN

™ PHANCONG: truy cập tuần tự, do không có phép chọn nào trên PHANCONG

™ DUAN: truy cập theo chỉ số trên TENDA, do có phép chọn trên DUAN theo TENDA.

Xây dựng cây với các thứ tự nối khác nhau (hình 2.21), ở mức đầu tiên ta chọn được các phương pháp truy cập một quan hệ tốt nhất. Mức thứ hai với mỗi phương án truy cập thì có các phương pháp nối khác nhau, từ đó chọn ra được một thứ tự nối tốt

Mức 1 của cây chỉ ra phương pháp truy xuất một quan hệ tốt nhất. Với mỗi

PHANCONG

NHANVIEN>< và PHANCONG><DUAN có chi phí tương ứng cao hơn so với PHANCONG><NHANVIENDUAN ><PHANCONG, thì mức 3 đưa ra hai khả năng còn lại đó là:

™ ((PHANCONG><NHANVIEN)><DUAN)

™ ((DUAN><PHANCONG)><NHANVIEN)

Khả năng thứ 2 sẽ được chọn do có chỉ mục trên thuộc tính chọn và truy xuất trực tiếp các bộ nối PHANCONG và NHANVIEN. Và nó chọn phương pháp truy xuất như sau: chọn DUAN do việc sử dụng chỉ số trên TENDA sau đó được nối với PHANCONG nhờ việc sử dụng tệp chỉ số trên MSDA, rồi tiến hành nối tiếp với NHANVIEN nhờ sử dụng chỉ mục trên MSNV.

Hình 2. 21 Các thứ tự nối khác nhau

Một phần của tài liệu (LUẬN văn THẠC sĩ) cơ sở dữ liệu phân tán và tối ưu hoá vấn tin luận văn ths công nghệ thông tin 1 01 10 (Trang 56 - 63)

Tải bản đầy đủ (PDF)

(127 trang)