Không gian tìm kiếm

Một phần của tài liệu Nghiên cứu tối ưu truy vấn trong cơ sở dữ liệu phân tán (Trang 50)

Các kế hoạch thực thi truy vấn thường được trìu tượng hóa qua cây toán tử, tại đó định nghĩa thứ tự thực hiện các phép toán. Chúng ta bổ sung thêm các thông tinnhư thuật toán tốt nhất được chọn cho mỗi phép toán. Đối với một câu truy vấn đã cho, không gian tìm kiếm có thể được định nghĩa như một tập các cây toán tử tương đương thu được bằng cách áp dụng các qui tắc biến đổi. Để nêu bật các đặc trưng của bộ tối ưu hóa truy vấn, chúng ta thường tập trung các cây nối (join tree), là cây toán tử với cácphép toán nối hoặc tích Đề - các. Lý do là các hoán vị thứ tự nối có ảnh hưởng đến hiệu suất của các truy vấn quan hệ [15].

Ví dụ 3.1Xét câu truy vấnSQL sau: SELECT C.ContactName

QEP tốt nhất Câu truy vấn

QEP tương đương

Tạo không gian tìm kiếm

Chiến lược tìm kiếm

Quy tắc biến đổi

FROM Contact C, ServiceRecord SR, Service S WHERE C.ContactID = SR.ContactID

AND SR.ServiceID = S.ServiceID

Để biểu diễn cho truy vấn trên chúng ta có ba cây nối tương đương nhau, điều này thu được bằng cách áp dụng tính chất kết hợp. Mỗi cây này có thể được gán một chi phí dựa trên chi phí của mỗi toán tử.Cây nối thứ ba bắt đầu với một tích Đề-các có thể có chi phí cao hơn rất nhiều so vớicác cây còn lại. Với một câu truy vấn phức tạp (có gồm nhiều quan hệ và nhiều toán tử), số cây toán tử tương đương có thể rất nhiều.

Hình 3.3 Biểu diễn truy vấn bằng cây nối

Ví dụ số cây nối có thể thu được từ việc áp dụng tính giao hoán và kết hợp là O(N!) cho N quan hệ. Việc đánh giá một khônggian tìm kiếm lớn có thể mất quá nhiều thời gian tối ưu hóa, đôi khi còn tốn hơn cảthời gian thực thi thực sự.Vì thể, bộtối ưu hóa thường hạn chế kích thước cần xemxét của không gian tìm kiếm. Hạn chế thứ nhất là dùng các heuristic. Một heuristicthông dụng nhất là thực hiện phép chọn và chiếu khi truy xuất đến quan hệ cơ sở. Một heuristic thông dụng khác là tránh lấy các tích Đề-cáckhông được chính câu truy vấn yêu cầu.Trong ví dụ 3.1, cây nối thứ ba không phải là phân được bộ tối ưu hóa xem xét trong không gian tìm kiếm.

ServiceRecord Service Contact ServiceID ContactID (1) Contact ContactID ServiceID Service ServiceRecord (2) Contact Service X ServiceRecord ContactID.ServiceID (3) R3 ⊳⊲ R4 ⊳⊲ ⊳⊲

(1) cây nối tuyến tính

R4 R3 ⊳⊲ ⊳⊲ ⊳⊲ R2 R1

Hình 3.4 Hai loại cây nối chính

Một hạn chế quan trọng khác ứng với hình dạng của cây nối. Hai loại cây nối thường được phân biệt cây nối tuyến tính (linear tree) và cây nối xum xuê

(bushy tree) (xem Hình 3.4). Một cây tuyến tính là cây với mỗi nút toán tử có ít nhất một toán hạng là một quan hệ cơ sở. Một cây xum xuê thì tổng quát hơn và có thể có các toán tửkhông có quan hệ cơ sở làm toán hạng (nghĩa là cả hai toán hạng đều là các quan hệ trung gian). Nếu chỉ xét các cây tuyến tính, kích thước của không gian tìm kiếm được rút gọn lại thành O(2N). Tuy nhiên trong môi trường phân tán, cây xum xuê rất có lợi cho việc thực hiện song song. Ví dụ, trong cây nối thứ haiHình 3.4, thao tác R1⊳⊲ R2 và R3 ⊳⊲R4 có thể thực hiện song song.

Một phần của tài liệu Nghiên cứu tối ưu truy vấn trong cơ sở dữ liệu phân tán (Trang 50)

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

(71 trang)