Kết luận chƣơng 1

Một phần của tài liệu mô hình tối ưu hóa truy vấn hai pha trong cơ sở dữ liệu và ứng dụng (Trang 34 - 77)

4. Những nội dung nghiên cứu chính

1.3.Kết luận chƣơng 1

Các khái niệm về mệnh đề, các phép toán mệnh đề, biểu thức logic, không gian tìm kiếm, các chiến lƣợc tìm kiếm, mô hình chi phí phân tán, các dạng chi phí song song, mô hình chi phí song song trên bọ tối ƣu hóa truy vấn …v.v đã đƣợc trình bày, là những kiến thức cơ sở cần thiết cho việc mở rộng nghiên cứu trong các chƣơng tiếp theo của luận văn.

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn

Chƣơng 2: MÔ HÌNH TỐI ƢU HÓA TRUY VẤN HAI PHA 2.1. Mô hình tối ƣu hóa truy vấn hai pha JOQR

Pha đầu:JOQR (Join Ordering and Query Rewriting)

i. Sắp xếp lại thứ tự các phép nối. ii. Biểu diễn lại câu truy vấn.

Bộ tối ƣu hóa thực hiện hai bƣớc này để tạo ra một cây truy vấn tiền xử lý, xác định những yếu tố nhƣ thứ tự thực hiện các phép toán và chiến lƣợc thực hiện mỗi phép toán. Bộ tối ƣu sẽ triển khai các mô hình và giải thuật song song để tìm kiếm một phƣơng án tốt nhất cho việc thi hành song song.

Pha thứ hai

Chuyển cây truy vấn tiền xử lý thành phƣơng án thi hành song song. Giai đoạn này cũng đƣợc chia làm hai bƣớc:

i. Trích ra cây toán tử và lập lịch. Trích cây toán tử là tạo ra một cây toán tử trong đó nhận biết các phép toán sơ cấp và các ràng buộc về thời gian giữa chúng.

ii. Bƣớc lập lịch nhằm cấp phát tài nguyên cho mỗi toán tử một cách hợp lý để cuối cùng đƣa ra một phƣơng án thi hành song song tối ƣu.

2.1.1. Cây truy vấn tiền xử lý

Cây truy vấn tiền xử lý làm nhiệm vụ giải thích phƣơng án thi hành một câu SQL: Cho biết thứ tự thực hiện mỗi phép toán, phƣơng pháp tính toán của mỗi toán tử. Mỗi nút của cây là một hay nhiều phép toán đại số quan hệ, mỗi nút lá là một quan hệ cơ sở. Phần ghi chú trên mỗi nút mô tả cách thức thực hiện toán tử gì trên đó

Ví dụ 2.1.1:

Nút "phép nối" có thể đƣợc chú giải là "nối băm" hoặc nối "sắp-trộn", nút "lá" có thể đƣợc chú giải là đƣợc truy xuất thông qua một chỉ mục. Để xem đƣợc các thông tin của cây truy vấn kiểu này, trong hầu hết các hệ thống SQL dùng câu lệnh Explain

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn Hình 2-1. Cây truy vấn tiền xử lý

Trong đó:

- Sort-merge: Là phép nối sắp trộn giữa biến bộ S và E theo MANV - Filter: Là phép lọc quan hệ CANBO

- Simple-hash: Là phép nối băm đơn giản (băm sau khi nối MANV trên hai biến bộ S và E)

- Index-Filter: Là phép lọc chỉ số

- Group Index-Filter: Là phép lọc chỉ số rồi gộp lại Với các quan hệ:

NHANVIEN(MANV, HTENNV, LUONG) CANBO(MACB, LUONG)

CHUYENMON(MANV, TENCM) Trong đó

- Quan hệ NHANVIEN: Nhân viên

+ MANV: Mã nhân viên

+ HTENNV: Họ và tên nhân viên + LUONG: Lƣơng của nhân viên

- Quan hệ CANBO: Cán bộ AVG CANBO M Filter CHUYENMON S Index - Filter NHANVIEN E Group Index - Filter Simple - hash S.MANV= E.MANV Sort - merge

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn

+ MACB: Mã cán bộ

+ TENCB: Họ và tên cán bộ

- Quan hệ CHUYENMON: Chuyên môn

+ MANV: Mã nhân viên + TENCM: Tên chuyên môn (adsbygoogle = window.adsbygoogle || []).push({});

NHANVIEN

MANV HTENNV LUONG

A1 Phùng Tuấn Dũng 3900000 A2 Nguyễn Văn Giáp 3850000 A3 Trần Việt Hùng 4000000 A4 Nguyễn Nguyệt Nga 2750000 A5 Trần Thị Lan 3950000

CANBO CHUYENMON

MACB HTENNV MANV TENCM

A1 Phùng Tuấn Dũng A1 KS. Cơ khí

A3 Trần Việt Hùng A2 KS. Công nghệ thông tin

A5 Trần Thị Lan A3 KS. Điện

A8 Triệu Văn Phú A4 CN. Kinh tế

A5 CN. Kinh tế quốc tế A8 Bảo vệ

Viết câu vấn tin SQL sau: "Hãy liệt kê lƣơng trung bình của các nhân viên làm công việc lập trình có lƣơng lớn hơn lƣơng của lãnh đạo".

Khi ký hiệu E, M, S là các biến bộ tƣơng ứng với các quan hệ: NHANVIEN, CANBO, CHUYENMON. Câu vấn tin sẽ là:

SELECT AVG (E.LUONG)

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn

WHERE E.MANV = S.MANV AND E.MANV = M.MACB AND E.LUONG > M.LUONG AND S.TENCM = "Lập trình"

2.1.2. Cây toán tử

Cây toán tử đã đƣợc định nghĩa tổng quát tại hình mục 1.2.1. Ở đây, vì mục đích để mô tả các phép toán song song cũng nhƣ các ràng buộc về thời gian, ta biểu diễn lại cây toán tử nhƣ sau:

- Các nút của cây toán tử biểu diễn các toán tử và các đoạn mã lệnh đơn. - Các cạnh chỉ các dòng dữ liệu, hƣớng chỉ của mỗi cạnh thể hiện ràng buộc thời gian giữa các toán tử.

- Một toán tử có thể nhận vào nhiều tập các bộ và tạo ra một tập kết quả. - Các toán tử đƣợc hình thành nhờ phát sinh ra các đoạn mã cài đặt các phép toán quan hệ trong cây truy vấn tiền xử lý một cách thích hợp. Một tiêu chuẩn trong việc thiết kế các toán tử là chuyển các ràng buộc thời gian nội tại thành các ràng buộc đơn giản, chẳng hạn các ràng buộc song song và ràng buộc thứ tự:

+ Cạnh nối hai (nút) toán tử i và j là một ràng buộc song song giữa i và j nếu i và j phải bắt đầu thực hiện công việc và kết thúc công việc đồng thời. Quy định cạnh có ràng buộc song song là đƣờng ống (là cạnh đƣợc vẽ nét mảnh). Một cạnh đƣờng ống thƣờng đƣợc cài đặt bằng cách dùng cơ chế dòng điều khiển, nghĩa là toán tử sản xuất dữ liệu nhanh đƣợc điều khiển chậm lại để "chờ" nếu toán tử tiêu thụ dữ liệu chậm hơn, và ngƣợc lại để các toán tử sản xuất và tiêu thụ thực thi cùng một lúc.

+ Cạnh nối hai (nút) toán tử i và j là một ràng buộc thứ tự giữa i và j nếu j chỉ bắt đầu sau khi i kết thúc. Quy định cạnh có ràng buộc thứ tự là cạnh khối (là cạnh đƣợc vẽ nét đậm). Các ràng buộc thứ tự làm cho phép toán tiêu thụ chỉ đƣợc bắt đầu khi phép toán sản xuất đã kết thúc.

Quá trình xây dựng cây toán tử dựa vào cây truy vấn tiền xử lý. Quá trình này có thể xem nhƣ việc áp dụng một thủ tục "lấn chiếm" cho mỗi nút

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn

của cây. Do các cây truy vấn tiền xử lý đƣợc cấu thành từ một tập cố định các toán tử nên quá trình áp dụng thủ tục lấn chiếm cho mỗi toán tử có thể thực hiện nhờ một cơ chế luật dẫn.

Ví dụ 2.1.2:

Hình 2-2 là cây toán tử tƣơng ứng cây truy vấn tiền xử lý ở hình 2-1. phép nối băm của hai quan hệ CHUYENMON và NHANVIEN tạo nên hai phép toán Build (toán tử tạo quan hệ băm) và Probe (toán tử so sánh để thực hiện phép nối).

Toán tử Probe chỉ đƣợc thực hiện khi toán tử Build đã thực hiện xong nhiệm vụ của mình để có dữ liệu ra làm dữ liệu vào cho Probe, nên cạnh từ Build đến Probe phải là cạnh khối.

Phép nối sắp trộn hai quan hệ sẽ sắp xếp chúng theo thuộc tính nối rồi trộn các dòng kết quả lại. Thao tác trộn đƣợc thực hiện bởi phép toán Merge. Trong ví dụ này, ta giả sử đầu vào bên phải của phép nối sắp trộn phải đƣợc sắp xếp trƣớc. Khi đó, cây toán tử cho thấy đầu vào bên trái của phép nối đƣợc tách bởi hai phép toán FormRuns và MergeRuns. Do thao tác trộn các dòng dữ liệu chỉ đƣợc thực hiện sau khi đã hình thành các đƣờng chạy nên cạnh nối từ FormRuns đến MergeRuns phải là cạnh khối.

Tóm lại, cây toán tử sẽ cho thấy đƣợc khả năng song song hóa trong việc thực hiện câu truy vấn SQL. Ta thấy rằng cơ chế song song dạng ống chỉ có thể áp dụng đƣợc cho những toán tử đƣợc nối với những cạnh ống, đây cũng là một hạn chế của cơ chế này. Chúng ta cũng nhận thấy rằng, hai cây con trên cùng một cây toán tử mà không bị ràng buộc thứ tự thì có thể thực hiện theo cơ chế song song độc lập. Ví dụ, hai cây con có các gốc ở FormRuns và Build có thể thực hiện độc lập bởi vì chúng không bị nối cạnh bị ràng buộc thứ tự. Ngoài ra, các toán tử FormRuns và Scan(M) có thể thực hiện song song dạng ống còn các toán tử bất kỳ khác có thể sử dụng theo cơ chế song song phân bố.

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn (adsbygoogle = window.adsbygoogle || []).push({});

AVG

MERGE

MERGERUNS PROBE

BUILD

SCAN(M) SCAN (S) INDEX

CLUSTERED SCAN (E)

Hình 2-2. Cây toán tử tương ứng với cây trong hình 2-1

2.2. Tối ƣu hóa giai đoạn JOQR

Quá trình thực hiện tối ƣu câu truy vấn trong cơ sở dữ liệu song song bằng mô hình tối ƣu hóa truy vấn hai pha:

Pha đầu: Sắp xếp lại thứ tự các phép nối và biểu diễn lại câu truy vấn Pha thứ hai: Chuyển cây truy vấn tiền xử lý thành phƣơng án thi hành song song.

Pha đầu tiên, sẽ tập trung vào việc khai thác các tính chất vật lý của các toán hạng, nhƣ đã phân chia dữ liệu cho các nút dựa trên một thuộc tính của quan hệ vào; xác định các phƣơng pháp tốt nhất để tính toán các toản tử; xác định thứ tự các phép nối trong cây toán tử;...

Trong hầu hết các phƣơng pháp tìm kiếm lời giải tối ƣu cho câu truy vấn bằng cách tiếp cận hai pha thì ở pha đầu tiên thƣờng đƣợc áp dụng những kết quả trong xử lý tuần tự. Chúng ta sẽ giải quyết bài toán trong pha đầu tiên này bằng các mô hình và thuật toán có để ý đến khía cạnh song song. Do đó, thay vì tìm phƣơng án tốt nhất để thực hiện tuần tự, các thuật toán trình bày ở đây lại tìm kiếm phƣơng án để thi hành song song.

Trƣớc tiên, chúng ta bắt đầu bài toán cực tiểu hóa chi phí truyền thông bằng một mô hình đơn giản, trong đó chỉ quan tâm đến chi phí truyền thông phát sinh do việc phân mảnh ngang lại dữ liệu trên các bộ xử lý. Bằng cách

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn

tiếp cận bài toán tô màu cho cây, trong đó mỗi màu tƣợng trƣng cho một phân mảnh ngang dữ liệu trên mỗi nút của cây, chúng ta sẽ xây dựng các thuật toán tô màu cây truy vấn nhằm xác định chiến lƣợc thực hiện tối ƣu cây truy vấn. Sau đó, chúng ta sẽ bàn đến hai mở rộng cho mô hình này.

- Thứ nhất, mở rộng các màu, với giả thiết rằng một màu đại diện cho một tính chất vật lý nào đó (chẳng hạn, dữ liệu đƣợc sắp xếp, các chỉ mục,...) đƣợc các chiến lƣợc sử dụng để tính toán các toán tử.

- Thứ hai, chọn lựa phƣơng pháp cài đặt cho mỗi phép toán. Bởi vì mỗi phép toán có thể có nhiều phƣơng pháp cài đặt khác nhau nên nếu sử dụng phƣơng pháp hợp lý sẽ thu đƣợc kết quả tốt hơn.

2.2.1. Cực tiểu hóa chi phí phân mảnh lại

Phƣơng pháp phân chia dữ liệu song song, ở đây chỉ tập trung vào trƣờng hợp phân mảnh ngang các quan hệ trong cơ sở dữ liệu, phƣơng pháp này thƣờng yêu cầu dữ liệu phải đƣợc phân mảnh lại trƣớc khi thực hiện phép toán, điều này sẽ làm phát sinh thêm chi phí

Ví dụ 2.2.1:

Giả sử cho các quan hệ

NHANVIEN(MANV, TEN, MAVUNG, SDT) KHACH(MAKH, TEN, MAVUNG, SDT) Trong đó:

Quan hệ NHANVIEN: Nhân viên

- MANV: Mã nhân viên - TEN: Họ và tên nhân viên - MAVUNG: Mã vùng - SDT: Số điện thoại

Quan hệ KHACH: Khách hàng

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn

- TEN: Họ và tên khách hàng - MAVUNG: Mã vùng

- SDT: Số điện thoại

Hai quan hệ trên đƣợc phân mảnh ngang cho hai nút theo thuộc tính đƣợc gạch dƣới. Cây truy vấn dƣới đây sẽ cho biết số lƣợng nhân viên cũng là khách hàng trong mỗi vùng. Một nhân viên đƣợc xem là một khách hàng nếu họ cùng tên và cùng số điện thoại.

SELECT MAVUNG, Count(*) (adsbygoogle = window.adsbygoogle || []).push({});

FROM KHACH INTERSECT (SELECT TEN, MAVUNG, SDT FROM NHANVIEN)

GROUP BY MAVUNG

Hình 2-3 và 2-4 cho chúng ta thấy cách tổ chức dữ liệu và chỉ ra sự khác nhau về cách thức dữ liệu đƣợc phân mảnh ngang trên hai cây truy vấn.

Nút 0 Nút 1

NHANVIEN0: Hash(TEN) mod 2 = 0 KHACH0: Hash(MAVUNG) mod 2 = 0

NHANVIEN1: Hash(TEN) mod 2 = 1 KHACH1: Hash(MAVUNG) mod 2 = 1

Hình 2-3. Sơ đồ phân mảnh ngang dữ liệu tại các nút

Group by (MAVUNG)

Intersect (MAVUNG)

NHANVIEN (TEN) KHACH (MAVUNG)

Group by (MAVUNG)

NHANVIEN (TEN) KHACH (MAVUNG)

a)

Intersect (MAVUNG)

b)

Hình 2-4. Các cây truy vấn khác nhau về phân hoạch dữ liệu, đường nét đứt cho thấy phải phân bố lại quan hệ

Do các bộ có cùng giá trị MAVUNG phải đƣợc đặt cùng nhau nên toán tử GROUP BY đƣợc phân mảnh ngang theo MAVUNG. Tuy nhiên toán tử

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn

INTERSECT có thể phân mảnh ngang dựa vào bất kỳ thuộc tính nào. Nếu chọn phân mảnh ngang theo MAVUNG thì phải phân mảnh ngang lại quan hệ NHANVIEN cũng nhƣ kết quả của INTERSECT. Vì vậy, tùy thuộc vào kích thƣớc của các quan hệ trung gian mà cây truy vấn nào trong hai cây đƣợc xem là tốt hơn.

2.2.2. Khả phân mảnh và toán tử cảm thuộc tính

Một phân mảnh ngang là một cặp (a, h), trong đó a là một thuộc tính và h là một hàm, hàm này ánh xạ một giá trị của a thành một giá trị không âm.

Ví dụ 2.2.2:

Phân mảnh ngang quan hệ NHANVIEN đƣợc biểu diễn nhƣ sau (TEN, hash(TEN) mod 2). Hàm hash(TEN) mod 2 đƣợc áp dụng cho tất cả các bộ của quan hệ NHANVIEN và những bộ này đƣợc đƣa vào các mảnh NHANVIEN0 hoặc NHANVIEN1 tuỳ theo giá trị hàm là 0 hoặc 1.

Việc chọn một ánh xạ h tuỳ thuộc vào mục đích sử dụng và vào miền giá trị thuộc tính a. Ví dụ ta có thể xem hash(TEN) mod 2 là len(TEN) mod 2, trong đó len(TEN) là độ dài (số byte) của giá trị trong trƣờng TEN.

Phân mảnh ngang cho biết khả năng song song hoá dựa vào ngữ nghĩa của hầu hết các phép toán trên cơ sở dữ liệu và cho khả năng tính toán song song trên các mảnh.

Giả sử S0, S1.., Sk và T0, T1,.., Tk là các mảnh ngang của các quan hệ S và T tƣơng ứng đƣợc tạo ra bởi cùng một phân mảnh ngang = (a, h). Ta có các định nghĩa sau:

Định nghĩa 2.2.1:

Toán tử f gọi là khả phân mảnh ngang ứng với phân mảnh ngang một ngôi theo = (a, h) nếu f(S) = f(S0) f(S1) ... f(Sk) và f(S0) f(S1) ... f(Sk) = .

Ví dụ 2.2.3:

Phân mảnh ngang một ngôi quan hệ NHANVIEN theo = (LUONG, (adsbygoogle = window.adsbygoogle || []).push({});

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn

f(NHANVIEN0), = (LUONG, LUONG <=3900000) Kết quả f(NHANVIEN0)

MANV HTENNV LUONG

A1 Phùng Tuấn Dũng 3900000 A2 Nguyễn Văn Giáp 3850000 A4 Nguyễn Nguyệt Nga 2750000 Kết quả f(NHANVIEN1)

MANV HTENNV LUONG

A3 Trần Việt Hùng 4000000 A5 Trần Thị Lan 3950000

Và f(NHANVIEN) = f(NHANVIEN0) f(NHANVIEN1), f(NHANVIEN0) f(NHANVIEN1) =

- Toán tử f gọi là khả phân mảnh ngang ứng với phân mảnh ngang hai ngôi theo = (a, h) nếu f(S,T) = f(S0, T0) f(S1, T1) ... f(Sk,Tk) và f(S0, T0) f(S1, T1) ... f(Sk,Tk) = .

Ví dụ 2.2.4:

Phân mảnh ngang hai ngôi quan hệ NHANVIEN, quan hệ CHUYENMON theo = (MANV, Hash(MANV) mod 2). Trong đó hàm hash đƣợc sử dụng để lấy tổng (theo hệ thập phân) mã Acsii của các ký tự trong MANV.

f(NHANVIEN, CHUYENMON), = (MANV, Hash(MANV) mod 2). Kết quả f(NHANVIEN0)

MANV HTENNV LUONG

A1 Phùng Tuấn Dũng 3900000 A3 Trần Việt Hùng 4000000 A5 Trần Thị Lan 3950000

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn

Kết quả f(NHANVIEN1)

MANV HTENNV LUONG

A2 Nguyễn Văn Giáp 3850000 A4 Nguyễn Nguyệt Nga 2750000 Kết quả f(CHUYENMON0) MANV TENCM A1 KS. Cơ khí A3 KS. Điện A5 CN. Kinh tế quó tế Kết quả f(CHUYENMON1) MANV TENCM

A2 KS. Công nghệ thông tin A4 CN. Kinh tế

A8 Bảo vệ

Và f(NHANVIEN, CHUYENMON) = f(NHANVIEN0, CHUYENMON0) f(NHANVIEN1, CHUYENMON1),

f(NHANVIEN0, CHUYENMON0) f(NHANVIEN1, CHUYENMON1) =

Định nghĩa 2.2.2:

- Một toán tử trên cây toán tử đƣợc gọi là cảm thuộc tính nếu nó chỉ có thể phân mảnh ngang quan hệ đã cho trên thuộc tính duy nhất nào đó trong quan hệ đó.

- Một toán tử trên cây toán tử đƣợc gọi là bất cảm thuộc tính nếu nó có thể phân mảnh trên nhiều hơn một thuộc tính.

Ví dụ 2.2.5: Xét cây truy vấn: "Cho biết tên của các kỹ sƣ cơ khí có lƣơng >= 3900000"

Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn

Cây toán tử tƣơng ứng

Một phần của tài liệu mô hình tối ưu hóa truy vấn hai pha trong cơ sở dữ liệu và ứng dụng (Trang 34 - 77)