Trong bài viết này tác giả tập trung thảo luận một phương pháp tối ưu hóa câu truy vấn bằng kỹ thuật heuristic nhằm nâng cao tốc độ truy xuất dữ liệu, giảm số bộ dữ liệu thừa, không gian lưu trữ dữ liệu trung gian trong bộ nhớ khi thực hiện một cây truy vấn.
Thông báo Khoa học Công nghệ* Số 1-2013 126 THUẬT TỐN TỐI ƯU HĨA TRUY VẤN TRÊN CƠ SỞ DỮ LIỆU QUAN HỆ ThS Trần Thái Sơn Trung tâm Ngoại ngữ - Tin học, trường Đại học Xây dựng Miền trung Tóm tắt: Hầu hết tất hệ trị sở liệu dùng ngôn ngữ truy vấn có cấu trúc SQL (Structure Query Language) để truy xuất liệu, việc lựa chọn biểu thức đại số quan hệ để thực thi câu truy vấn vấn đề cần thiết Trong báo tác giả tập trung thảo luận phương pháp tối ưu hóa câu truy vấn kỹ thuật heuristic nhằm nâng cao tốc độ truy xuất liệu, giảm số liệu thừa, không gian lưu trữ liệu trung gian nhớ thực truy vấn Từ khóa: Truy vấn SQL, biểu thức đại số quan hệ, tối ưu hóa truy vấn Chuyển câu truy vấn SQL sang đại số quan hệ SQL (Structure Query Language) ngôn ngữ truy vấn sử dụng hầu hết hệ quản trị sở liệu Quá trình thực thi câu truy vấn SQL, câu truy vấn chuyển đổi sang biểu thức đại số quan hệ tương đương biểu diễn dạng cấu trúc truy vấn, sau tối ưu hóa Ví dụ 1: Xét câu truy vấn SQL lược đồ quan hệ NHANVIEN sau: NHANVIEN(MaNV, HoLot, Ten, NgaySinh, GioiTinh, Chucvu, DiaChi, HSLuong, SoPhong) SELECT HoLot, Ten, DiaChi FROM NHANVIEN WHERE HSLuong > ( SELECT MAX(HSLuong) FROM NHANVIEN WHERE SoPhong = “KT05”); Khối truy vấn bên SELECT MAX(HSLuong) FROM NHANVIEN WHERE SoPhong = “KT05”) chuyển sang biểu thức đại số quan hệ mở là: MAX “KT05”(NHANVIEN)) rộng HSLuong(SoPhong = Trong phép kết hợp hàm hàm: SUM, AVERAGE, MAX, MIN, COUNT… Khối truy vấn bên SELECT HoLot, Ten, DiaChi FROM NHANVIEN WHERE chuyển sang biểu thức đại số quan hệ: HoLot, Ten, DiaChi(HSLuog > c(NHANVIEN)), với C kết trả khối truy vấn bên MAX HSLuong(SoPhong = “KT05”(NHANVIEN)) Như việc tối ưu hóa truy vấn q trình lựa chọn biểu thức đại số cho câu truy vấn cho tốc độ truy xuất nhanh không dư thừa thơng tin khơng cần thiết Tối ưu hóa câu truy vấn phương pháp heuristic Bài báo tập trung thảo luận kĩ thuật tối ưu hóa câu truy vấn áp dụng qui tắc heuristic để thay đổi trình thực thiện biểu thức đại số quan hệ bên truy vấn Thông thường, ta sử dụng hình thức truy vấn cấu trúc liệu đồ thị truy vấn để cải tiến trình tối ưu Từ truy vấn mức cao tạo Thông báo Khoa học Công nghệ* Số 1-2013 biểu thức đại số quan hệ, sau tối ưu theo qui tắc heuristic 2.1 Cây truy vấn đồ thị truy vấn Một truy vấn cấu trúc liệu dạng tương ứng với biểu thức đại số quan hệ Các quan hệ đầu vào câu truy vấn biểu diễn nút cây, phép toán đại số quan hệ nút bên Quá trình thực truy vấn bao gồm việc thực nút bên lần thực toán hạng biểu thức quan hệ, sau thay nút bên quan hệ kết phép tốn Q trình thực kết thúc nút gốc thực tạo quan hệ kết cho câu truy vấn Ví dụ 2: Xét lược đồ sở liệu quan hệ sau: NHAN VIEN(MaNV, HoLot, Ten, Ngaysinh, GioiTinh, ChucVu, DiaChi, HSLuong, Sophong) PHONG BAN(SoPBan, TenPhongBan, DienThoai, MaQly, NgayBatDauQL) DIA CHI PBAN( SoPBan , Diachi,) DU AN( SoDuAn, TenDaAn, DiaChiDuAn, SoPhong) THAM GIA(SNV, SDA, SoNgayCong) THAN NHAN(MaNV, HoTenTN, Phai, NgaySinhTN, MoiQuanHe) Với truy vấn Q1: Cho biết số dự án, số phòng ban, tên, địa ngày sinh người quản lí phòng ban dự án nằm “Stafford” Truy vấn Q1 tương ứng với biểu thức đại số quan hệ: SoDuAn, Sophong, Ten, DiaChi, AN)) NgaySinh(((DiaChiDuAn=’Stafford’ (DU Sophong=SoPBan (PHONG BAN)) 127 SELECT P.SoDuAn, P.SoPhong, E.Ten, E.DiaChi, E.NgaySinh FROM DU AN AS P, PHONG BAN AS D, NHAN VIEN AS E WHERE P.SoPhong = D.SoPBan AND D.MaQly = E MaNV AND P.DiaChiDuAn =”Stafford” ; Hình 1(a) biểu diễn truy vấn truy vấn Q1, có ba quan hệ DU AN, PHONG BAN NHAN VIEN thể nút P, D E Các phép đại số quan hệ biểu thức biểu diễn nút bên Khi truy vấn thực hiện, nút (1) phải bắt đầu thực trước nút (2) số kết phép (1) phải sẵn sàng trước bắt đầu thực phép (2) Tương tự, nút (2) phải bắt đầu thực tạo kết trước nút (3) bắt đầu thực hiện, … Hình 1(a): Cây truy vấn tương ứng với biểu thức đại số quan hệ MaQly = MaNV( NHAN VIEN)) Và tương ứng với câu lệnh SQL sau: Hình 1(b): Cây truy vấn ban đầu ứng với SQL Thông báo Khoa học Công nghệ* Số 1-2013 128 WHERE TenDuAn = ‘Aquarius’AND SoDuAn = SDA AND SNV = MaMV AND NgaySinh > #31/12/1977#; Các bước chuyển đổi truy vấn suốt q trình tối ưu hóa cách sử dụng heuristic Hình 1(c): Đồ thị truy vấn Q1 Sự biểu diễn đồ thị truy vấn không cho biết thứ tự thực phép tốn, gồm đồ thị đơn tương ứng với truy vấn Một số kĩ thuật tối ưu hoá dựa vào đồ thị truy vấn, hầu hết chưa đưa thứ tự thực phép toán cây, việc tối ưu hố câu truy vấn cần phải thứ tự thực phép 2.2 Tối ưu hoá truy vấn heuristic Thơng thường, câu truy vấn biểu diễn sang nhiều biểu thức đại số quan hệ khác Phân tích câu truy vấn tạo truy vấn ban đầu chuẩn ứng với truy vấn SQL mà không sử dụng tối ưu hoá Việc tối ưu hoá bao gồm qui tắc tương đương biểu thức đại số quan hệ mà áp dụng cho truy vấn ban đầu Tối ưu hóa câu truy vấn qui tắc heuristic sử dụng biểu thức tương đương để chuyển truy vấn ban đầu thành truy vấn cuối tối ưu Ví dụ 3: Xét truy vấn Q2: Tìm tên tất nhân viên sinh sau 1957, làm việc dự án có tên ‘Aquarius’ Truy vấn viết lại SQL sau: SELECT FROM AN Ten NHAN VIEN, THAM GIA , DU Hình (a): Cây truy vấn ban đầu ứng với SQL Hình (b): Chuyển phép chọn xuống truy vấn Hình (c): Ưu tiên áp dụng phép chọn có giới hạn Thơng báo Khoa học Cơng nghệ* Số 1-2013 Hình (d): Thay tích Đề Các phép chọn phép nối Hình 2(e): Chuyển phép chiếu xuống truy vấn Cây truy vấn ban đầu Q2 hình 1(a) Quá trình thực truy vấn tạo tập hợp liệu lớn bao gồm tích Đề liệu đầu vào NHAN VIEN, THAM GIA DU AN Tuy nhiên truy vấn cần ghi từ quan hệ DU AN tên dự án ‘Aquarius’ ghi NHAN VIEN có ngày sinh sau 31/12/1977 Hình 2(b) truy vấn cải tiến mà áp dụng phép chọn để giảm số xuất tích Đề Các Một cải tiến đạt chuyển vị trí quan hệ NHAN VIEN DU AN cây, hình 2(c) Điều sử dụng thông tin mà số 129 dự án thuộc tính khố quan hệ DU AN, phép chọn quan hệ DU AN lấy ghi Chúng ta cải tiến truy vấn cách thay phép tích Đề mà theo sau điều kiện nối với phép nối, hình 2(d) Một cải tiến khác giữ lại thuộc tính cần cho phép theo sau quan hệ trung gian, ví dụ sử dụng phép chiếu () trước truy vấn hình 2(e) Điều làm giảm thuộc tính quan hệ trung gian, ngược lại phép chọn làm giảm cần truy xuất Có nhiều qui tắc để chuyển đổi phép toán đại số quan hệ thành biểu thức tương đương Ở quan tâm đến ý nghĩa phép toán quan hệ kết Vì vậy, hai quan hệ có tập thuộc tính theo thứ tự khác hai quan hệ trình bày lượng thơng tin xem quan hệ tương đương Phần giới thiệu số qui tắc chuyển đổi có ích việc tối ưu hóa câu truy Gộp dãy phép chọn: C AND C2 AND …AND Cn(R) C1 ( C2 ( ( cn ( R )) )) Tính giao hốn phép chọn: C1 ( C2 ( R )) C2 ( C1 ( R )) Gộp dãy phép chiếu: List1( List2(…( Listn(R))…)) List1(R) Tính giao hốn phép chọn với phép chiếu: Nếu điều kiện chọn C bao gồm thuộc tính A1, …,An danh sách phép chiếu hai phép giao hoán với nhau: A1 , A2 , , An ( c ( R )) c ( A1 , A2 , , An ( R )) Thông báo Khoa học Cơng nghệ* Số 1-2013 Tính giao hốn phép nối / tích Đề Các Phép phép có tính giao hốn: R c S S c R ; R S S R Tính giao hốn phép chọn phép nối (hoặc tích Đề Các): Nếu tất thuộc tính điều kiện chọn C bao gồm thuộc tính hai quan hệ phép ta có: C (R S) ( C (R)) S Như lựa chọn, điều kiện chọn C viết lại (c1 AND c2), c1 bao gồm thuộc tính R điều kiện c2 bao gồm thuộc tính S, ta có: C (R S) ( C (R)) ( C (S)) Tính giao hốn phép chiếu phép nối (hoặc tích Đề Các: Giả sử danh sách phép chiếu L ={A1, , An , B1, , Bm}, A1, , An thuộc tính R B1, , Bm thuộc tính S Nếu điều kiện nối C bao gồm thuộc tính L ta có: L(R c S) (A1, , An(R)) c (B1, , Bm(S)) Nếu điều kiện nối C chứa thuộc tính khơng thuộc L thuộc tính phải thêm vào danh sách phép chiếu phép chiếu cuối thêm vào Ví dụ, thuộc tính An+1 , , An+k R Bm+1, , Bm+p S bao gồm điều kiện nối C không thuộc danh sách thuộc tính chiếu L, ta có: L(R c S) L((A1, , An,An+1, , An+k(R)) c (B1, , Bm,Am+1, , Am+p(S))) Đối với phép khơng có điều kiện C nên qui tắc chuyển đổi áp dụng cách thay c Tính giao hốn phép tốn tập hợp: Các phép tập hợp có 130 tính giao hốn phép - (phép trừ) khơng có tính giao hốn Tính kết hợp phép toán , , là: (R S) T R (S T) 10 Tính giao hốn phép chọn với phép tốn tập hợp: Phép giao hoán với , – là: C (R S) ( C (R)) ( C (S)) 11 Tính giao hoán phép chiếu với phép hợp: L(R S) (L(R)) (L(S)) 12 Chuyển dãy phép chọn, tích Đề Các (,) thành phép nối : Nếu điều kiện C phép mà theo sau phép tương ứng với điều kiện nối, chuyển dãy (,) thành phép sau: C (R S) (R c S) Từ qui tắc ta có thuật tốn tối ưu hóa truy vấn phương pháp heuristic thực sau: Bước 1: Sử dụng qui tắc 1, phân rã phép chọn có điều kiện hội thành dãy phép chọn, chuyển phép chọn xuống nhánh khác Bước 2: Sử dụng qui tắc 2, 4, 10 tức tính giao hoán phép chọn với phép khác, chuyển phép chọn xuống phía truy vấn Bước 3: Sử dụng qui tắc tính giao hốn kết hợp phép tốn hai ngơi Sắp xếp lại nút lá, ưu tiên quan hệ tương ứng với phép chọn giới hạn nhất, phép tạo quan hệ với số quan hệ với kích thước nhỏ Bước 4: Sử dụng qui tắc 12, kết hợp phép tích Đề Các với phép chọn thành phép nối, điều kiện phép chọn tương ứng với điều kiện nối Bước 5: Sử dụng qui tắc 3, 4, 7, 11 dãy phép chiếu tính giao hốn Thơng báo Khoa học Cơng nghệ* Số 1-2013 phép chiếu với phép khác Phân rã chuyển danh sách thuộc tính chiếu xuống phía truy vấn đến mức cách tạo phép chiếu cần thiết Chỉ thuộc tính cần kết truy vấn phép toán truy vấn nên giữ lại sau phép chiếu Bước 6: Nhận trình bày nhóm phép tốn thực thuật tốn đơn Heuristic áp dụng phép tốn làm giảm kích thước kết trung gian Điều bao gồm việc thực phép chọn phép chiếu trước để giảm số giảm số thuộc tính Thêm vào đó, phép chọn giới hạn phép tạo quan hệ với số quan hệ với kích thước nhỏ nên thực trước toán tử tương tự khác Điều thực cách 131 xếp lại nút nhằm loại bỏ tích Đề Các điều chỉnh phần lại cách thích hợp Kết luận Bài báo đưa nhìn tổng quan kỹ thuật sử dụng hệ quản trị sở liêu việc xử lý tối ưu hóa truy vấn mức cao Phương pháp heuristic để tối ưu hóa câu truy vấn, sử dụng quy tắc heuristic kỹ thuật đại số để cải tiến hiệu q trình truy vấn Thơng qua truy vấn thể biểu thức đại số quan hệ tối ưu hóa dựa theo qui tắc heuristic cách tổ chức lại nút chuyển thành truy vấn tương đương khác hiệu để xử lý Các quy tắc chuyển đổi giữ vững tính tương đương áp dụng cho truy vấn sau giới thiệu kế hoạch thực truy vấn truy vấn SQL TÀI LIỆU THAM KHẢO [1] PGS.TS, Vũ Đức Thi 1997 “Cơ sở liệu – Kiến thức thực hành” Nxb Khoa học Thống kê [2] Trần Nguyên Phong 2005 “Giáo trình thực hành SQL”, ĐHKH Huế [3] Elmasri & Navathe 2007 “Fundamentals of Database Systems” [4] Ramakrishnan, R and Gehrke 2003 “Database Management Systems”, Third Edition, McGraw Hill ... số quan hệ mà áp dụng cho truy vấn ban đầu Tối ưu hóa câu truy vấn qui tắc heuristic sử dụng biểu thức tương đương để chuyển truy vấn ban đầu thành truy vấn cuối tối ưu Ví dụ 3: Xét truy vấn. .. nghệ* Số 1-2013 biểu thức đại số quan hệ, sau tối ưu theo qui tắc heuristic 2.1 Cây truy vấn đồ thị truy vấn Một truy vấn cấu trúc liệu dạng tương ứng với biểu thức đại số quan hệ Các quan hệ. .. báo đưa nhìn tổng quan kỹ thuật sử dụng hệ quản trị sở liêu việc xử lý tối ưu hóa truy vấn mức cao Phương pháp heuristic để tối ưu hóa câu truy vấn, sử dụng quy tắc heuristic kỹ thuật đại số để