Tiền tối ưu các câu sql từ chương trình nguồn

64 256 0
Tiền tối ưu các câu sql từ chương trình nguồn

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

i LỜI CAM ĐOAN Tôi cam đoan công trình nghiên cứu riêng Các số liệu, kết nêu luận văn trung thực chưa công bố công trình khác Qua em xin chân thành cảm ơn toàn thể thầy cô khoa đào tạo sau đại học trường Đại học Công nghệ Thông tin Truyền thông đặc biệt Thầy PGS.TS Lê Huy Thập, tạo điều kiện thuận lợi hướng dẫn em để hoàn thành luận văn ii MỤC LỤC LỜI CAM ĐOAN i MỤC LỤC ii DANH MỤC CÁC KÝ HIỆU iv DANH MỤC CÁC CHỮ VIẾT TẮT v DANH MỤC BẢNG BIỂU vi DANH MỤC HÌNH ẢNH vii LỜI MỞ ĐẦU CHƯƠNG 1: TỔNG QUAN VỀ NGÔN NGỮ SQL 1.1 Nghiên cứu ngôn ngữ SQL số dạng câu vấn tin SQL 1.1.1 Giới thiệu ngôn ngữ SQL 1.1.2 Câu vấn tin SQL (Structured Query Language) 1.1.2.1 Thao tác với bảng 1.1.2.2 Khối lệnh Select 1.1.2.3 Tìm kiếm theo câu hỏi đơn giản 1.1.2.4 Các hàm thư viện 1.1.2.5 Tìm nhờ mệnh đề GROUP BY 1.1.2.6 Tìm kiếm câu hỏi phức tạp 10 1.2 Nghiên cứu thuật toán Ingres System tập trung 12 1.2.1 Thuật toán Ingres 12 1.2.2 Thuật toán System 20 1.3 Kết luận chương 25 CHƯƠNG 2: TIỀN TỐI ƯU CÁC CÂU SQL TỪ CHƯƠNG TRÌNH NGUỒN 26 2.1 Phương pháp phân rã SQL 26 2.1.1 Phương pháp phân rã SQL 26 2.1.2 Những ưu nhược điểm phương pháp phân rã SQL 32 iii 2.1.3 Ứng dụng phương pháp phân rã SQL: 33 2.2 Phương pháp thay SQL 34 2.2.1 Phương pháp thay SQL 34 2.2.2 Những ưu nhược điểm của phương pháp thay SQL 36 2.2.3 Ứng dụng phương pháp thay SQL 37 2.3 Thuật toán xử lý tiền tối ưu câu SQL 37 2.4 Kết luận chương 42 CHƯƠNG CHƯƠNG TRÌNH THỬ NGHIỆM 43 3.1 Mô tả toán 43 3.2 Thử nghiệm tiền tối ưu câu lệnh SQL 48 3.2.1 Xây dựng chương trình thử nghiệm 48 3.2.2 Thực thử nghiệm 49 KẾT LUẬN 56 HƯỚNG PHÁT TRIỂN 56 TÀI LIỆU THAM KHẢO 57 iv DANH MỤC CÁC KÝ HIỆU  Phép giao  Phép hợp Ký hiệu thuộc  Ký hiệu không thuộc - Phép trừ X Tích đề Phép nối π Phép chiếu θ Tê ta * Kết nối tự nhiên > Phép so sánh lớn < Phép so sánh bé ÷ Phép chia Phép Phép  Tập rỗng ¬ Phủ định = Phép => Lớn p21->p22 Câu vấn tin đơn quan hệ p1 dùng thể vấn tin ORQOP (One Relation Query Optimization Processor) Còn câu lệnh p21, p22 loại đơn quan hệ rút gọn phép phân rã thuật toán Theo phép thuật toán, p22 thay tập câu lệnh SQL quan hệ: q1: SELECT tblSinhVien.MaSV, tblSinhVien.TenSV, '9' as DiemThuongXuyen, 9' as DiemThi FROM tblSinhVien WHERE tblSinhVien.MaSV = 'SV001' 52 q2: SELECT tblSinhVien.MaSV, tblSinhVien.TenSV, '10' as DiemThuongXuyen, '10' as DiemThi FROM tblSinhVien WHERE tblSinhVien.MaSV = 'SV001' q3: SELECT tblSinhVien.MaSV, tblSinhVien.TenSV, '10' as DiemThuongXuyen, '10' as DiemThi FROM tblSinhVien WHERE tblSinhVien.MaSV = 'SV002' Kết truy vấn cho ta danh sách điểm sinh viên học môn Toán cao cấp sau: Hình 3.4 Thực truy vấn lấy danh sách điểm sinh viên sau tối ưu SQL Và thời gian thực câu lệnh truy vấn là: - Câu lệnh chưa tối ưu: 0.2157369 - Câu lệnh tối ưu: 0.1155684 Câu lệnh truy vấn 2: In thông tin lý lịch sinh viên có mã sinh viên SV001 Câu lệnh truy vấn lấy thông tin thành viên gia đình sau: 53 P: SELECT tblThanhVienGiaDinh.HoTen, tblThanhVienGiaDinh.NgheNghiep, tblThanhVienGiaDinh.SDT, tblThanhVienGiaDinh.Tuoi, tblQuanHe.TenQuanHe FROM tblQuanHe, tblGiaDinh, tblThanhVienGiaDinh WHERE tblGiaDinh.MaSV = 'SV001' and tblQuanHe.MaQuanHe = tblThanhVienGiaDinh.MaQuanHe and tblGiaDinh.MaThanhVien = tblThanhVienGiaDinh.MaThanhVien Hình 3.5 Thực truy vấn lấy thông tin sinh viên Câu lệnh p phân rã sau: P1: SELECT MaThanhVien FROM tblGiaDinh WHERE tblGiaDinh.MaSV = 'SV001' 54 P2: SELECT tblThanhVienGiaDinh.HoTen, tblThanhVienGiaDinh.NgheNghiep, tblThanhVienGiaDinh.SDT, tblThanhVienGiaDinh.Tuoi, tblQuanHe.TenQuanHe FROM tblThanhVienGiaDinh,tblQuanHe,TGGiaDinh WHERE tblQuanHe.MaQuanHe = tblThanhVienGiaDinh.MaQuanHe And tblThanhVienGiaDinh.MaThanhVien = TGGiaDinh.MaThanhVien P2 câu lệnh đa quan hệ, phân rã tiếp thành p21 p22 sau: P21: SELECT tblThanhVienGiaDinh.MaQuanHe, tblThanhVienGiaDinh.HoTen, tblThanhVienGiaDinh.NgheNghiep, tblThanhVienGiaDinh.SDT, tblThanhVienGiaDinh.Tuoi FROM tblThanhVienGiaDinh, TGGiaDinh INTO TGThanhVienGiaDinh WHERE tblThanhVienGiaDinh.MaThanhVien = TGGiaDinh.MaThanhVien P22: SELECT tblQuanHe.TenQuanHe, TGThanhVienGiaDinh.HoTen, TGThanhVienGiaDinh.NgheNghiep, TGThanhVienGiaDinh.SDT, TGThanhVienGiaDinh.Tuoi FROM tblQuanHe, TGThanhVienGiaDinh 55 WHERE TGThanhVienGiaDinh.MaQuanHe = tblQuanHe.MaQuanHe Như câu vấn tin p phân rã thành chuỗi câu vấn tin p1 -> p21->p22 Câu vấn tin đơn quan hệ p1 dùng thể vấn tin ORQOP (One Relation Query Optimization Processor) Còn câu lênh p21, p22 loại đơn quan hệ rút gọn phép phân rã thuật toán Theo phép thuật toán, p22 thay tập câu lệnh SQL quan hệ: Q1: SELECT N'Nguyễn Văn A' as HoTen, tblQuanHe.TenQuanHe, N'Giáo viên' as NgheNghiep, '123456' as SDT, '40' as Tuoi FROM tblQuanHe WHERE tblQuanHe.MaQuanHe = 'Bo' Q2: SELECT N'Nguyễn Thị B' as HoTen, tblQuanHe.TenQuanHe, N'Kỹ sư' as NgheNghiep, '123456' as SDT, '35' as Tuoi FROM tblQuanHe WHERE tblQuanHe.MaQuanHe = 'Me' Và kết truy vấn câu lệnh truy vấn là: Hình 3.6 Thực truy vấn lấy thông tin sinh viên sau tối ưu SQL Thời gian thực trước tối ưu: 0.1989044 Thời gian thực sau tối ưu: 0.09933 56 KẾT LUẬN Trong tài liệu nghiên cứu ứng dụng lệnh SQLs, AQLs, OTs SQL thường trước Từ phương pháp tối ưu hóa thủ công, chí tự động tối ưu hóa thuật toán cho chương mục 2.3 Nhưng việc tìm kiếm thủ công chương trình nguồn, viết lại câu vấn tin SQL không thời gian không tránh sai sót Phương pháp trình bày luận văn nhằm khắc phục nhược điểm trên, đồng thời hỗ trợ đắc lực cho hướng nghiên cứu ứng dụng thuật toán song song, lập trình song song, xử lí song song phân tán,… HƯỚNG PHÁT TRIỂN Nghiên cứu tiếp tục phát triển sau: Có thể thay phương pháp tối ưu tĩnh phương pháp tối ưu động, nghĩa tìm chiến lược truy nhập/xuất đến quan hệ, sau tìm chiến lược tối ưu tiền định cho chương trình nguồn Các phương pháp mở rộng cho trường hợp CSDL phân tán CSDL hướng đối tượng Xây dựng chương trình tự động tìm kiếm câu lệnh SQL đa quan hệ chương trình nguồn tự động tối ưu câu lệnh phương pháp phân rã thay trình bày nghiên cứu 57 TÀI LIỆU THAM KHẢO [1] Lê Huy Thập, Nguyễn Văn Sỹ, "Tìm câu SQL từ chương trình nguồn, chuyển sang AQL vẽ toán tử", Tạp chí khoa học ISSN 1859-2355, Tập N19/2012, Số 19, 213 – 221, 2012 [2] Lê Huy Thập, Nguyễn Thành Trung, Nguyễn Văn Lượng, "Tìm kiếm văn dựa vào cụm từ chuyển vào sở liệu", Tạp chí khoa học ISSN 1859-2355, Tập N25/2013, Số 25, 131 – 139, 2013 [3] Lê Huy Thập, Giáo trình kỹ thuật lập trình Tập 1, NXB KHOA HỌC TỰ NHIÊN VÀ CÔNG NGHỆ, 300p, 2008 [4] Đỗ Xuân Lôi, Cấu trúc liệu Giải thuật, NXB Khoa học kỹ thuật [5] M.Tamer Ozsu, Patrick Valduriez Nguyên lý hệ sở liệu phân tán Trần Đức Quang biên dịch NXB Thống kê, 1999 [6] Robert Sedgewick, Cẩm nang thuật toán Vol.1 and Vol.2 NXB Khoa học Kỹ thuật, 2001 [7] Ellis Horowitz, Sartaj Sahani, Fundamentals of data structures, Computer Science Press INC, 1976 [8] A V Aho, J.E Hopcroft, J.D Ulmann, Data Structures and algorithms, Ađition Wesley – 1983 [9] S.B Yao, Optimization of query evalution algorithms, ACM Trans On Database systems 4:2 pp 133-155, 1979 [10] C Zaniolo and M.A Melkanoff, On the design of relational database syschema ACM Trans On Database systems 6:1 pp 1-47, 1984 [11] M.M Zloof, Query – by – example: a database language, IBM System J 16:4, pp 324-343, 1977 [...]... ngữ lập trình bậc cao Trên đây là cơ sở lý thuyết nền tảng cho qua trình tối ưu hóa vấn tin Chương 2 sẽ trình bày các bước phân rã và thay thế các câu SQL để nhằm mục đích tối ưu hóa câu vấn tin 26 CHƯƠNG 2: TIỀN TỐI ƯU CÁC CÂU SQL TỪ CHƯƠNG TRÌNH NGUỒN Nếu câu vấn tin SQL đã được tối ưu sẽ nâng cao hiệu quả Để tìm hết các câu vấn tin SQL trong chương trình nguồn và xử lý nó theo nghĩa tối ưu hóa thì... chỉ ra Dưới đây sẽ trình bày phương pháp tìm kiếm vét cạn trong chương trình nguồn để tìm tất cả các câu SQL, sau đó tiền tối ưu hóa tĩnh các câu vấn tin này bằng phương pháp tách và thay thế sau đó ghi lại câu vấn tin đã xử lý vào vị trí cũ trong chương trình nguồn 2.1 Phương pháp phân rã SQL Phương pháp phân rã câu vấn tin SQL là: chuyển câu vấn tin đa quan hệ thành một tập các câu vấn tin đơn quan... đạt của một câu lệnh SQL, tốc độ xử lý của hệ thống sẽ khác nhau, các truy vấn phức tạp sẽ cản trở rất nhiều đến khả năng truy xuất dữ liệu của ứng dụng Bằng cách kiểm tra và tối ưu các câu truy vấn SQL, chúng ta có thể tối ưu hóa và cải thiện hiệu suất làm việc của hệ thống 25 1.3 Kết luận chương Chương 1 trình bày những kiến thức cơ bản về cớ sở dữ liệu, câu vấn tin SQL, quá trình tối ưu hóa và ngôn... nhằm ứng dụng được phương pháp tối ưu ORQ (Optimal Rilational Query – Truy vấn tối ưu đơn quan hệ)[5] 2.1.1 Phương pháp phân rã SQL Để có thể dùng thể xử lí vấn tin ORQ từ câu vấn tin đa quan hệ trước hết chúng ta cần phân rã câu vấn tin SQL (nếu có thể) để chọn ra các “mệnh đề chọn” nhằm làm giảm bớt các quan hệ tham gia vào câu truy vấn SQL như sau: Cho câu vấn tin p dạng SQL đa quan hệ, được phân rã... Thuật toán tối ưu hoá INGRES (được gọi INGRES - QOA) được trình bày dưới đây xử lý đệ qui cho đến khi không còn câu truy vấn một quan hệ nào nữa Thuật toán áp dụng các phép chọn và các phép chiếu ngay khi có thể sử dụng kỹ thuật tách Kết quả của câu truy vấn đơn quan hệ được lưu trong những cấu trúc dữ liệu có khả năng tối ưu hoá những câu truy vấn sau đó (như các nối) và sẽ được OVQP sử dụng Các câu truy... {INGRES-QOA} {gọi đệ qui} {trộn tất cả các kết quả lại} 20 1.2.2 Thuật toán System System R thực hiện tối ưu hoá tĩnh bằng cách tìm kiếm vét cạn không gian lời giải Đầu vào cho thể tối ưu hoá của System R là cây toán tử do phân rã câu truy vấn SQL Đầu ra của nó là một hoạch định thực thi để cài đặt các toán tử tối ưu Thay vì thực hiện một cách có hệ thống các phép toán chọn trước các phép nối như trong INGRES,... trong câu vấn tin, còn vòng thứ hai kiểm tra tất cả các hoán vị khả hữu của các thứ tự nối (có n! hoán vị cho n quan hệ) và chọn ra chiến lược truy 22 xuất tốt nhất cho câu vấn tin Các hoán vị được tạo ra bằng cách xây dựng động một cây các chiến lượt khác nhau, sau đó là các nối của ba quan hệ Điều này cứ tiếp tục cho đến khi các nối của n quan hệ đều được tối ưu Với hai Heuristic này, số lượng các. .. trình tiếp tục cho đến khi chỉ còn có một dãy liên tiếp các câu vấn tin đơn quan hệ, chúng được xử lý bởi ORQP, các câu vấn tin còn lại là đa quan hệ không thể phân rã tiếp được nhưng chúng được biến đổi thành câu vấn tin đơn quan hệ nhờ phép thế bộ Tóm tắt phép toán phân rã câu SQL như sau: Cho câu vấn tin p có n quan hệ MRQ, phép toán phân rã sẽ cho ra tập các câu vấn tin đơn quan hệ ORQ và một câu. .. đến một chiến lược tốt hơn Thể tối ưu sẽ gán một chi phí (theo thời gian) cho mỗi cây dự tuyển và giữ lại cây có chi phí thấp nhất Những cây dự tuyển có được bằng cách hoán vị các thứ tự nối của n quan hệ của câu truy vấn dựa vào các qui tắc kết hợp và hoán vị Để hạn chế chi phí dành cho việc tối ưu hoá, số lượng các cây được giảm bớt bằng kỹ thuật qui hoạch động Tập hợp các chiến lược khác nhau được... lực lượng của các toán hạng Thông tin về các lực lượng của các quan hệ trong CSDL được tìm thấy trong các thống kê của CSDL, được hệ thống System R tự động quản lý Lực lượng của các kết quả trung gian được ước lượng dựa vào các hệ số chọn của mỗi phép toán Thuật toán tối ưu hoá bao gồm hai bước chính Trước tiên là 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 (là

Ngày đăng: 05/05/2016, 11:05

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan