Tối ưu một số câu lệnh truy vấn SQL và ứng dụng

115 241 0
Tối ưu một số câu lệnh truy vấn SQL và ứng dụng

Đ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 HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG Chanthiva MANIVONG TỐI ƯU MỘT SỐ CÂU LỆNH TRUY VẤN SQL VÀ ỨNG DỤNG LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH THÁI NGUYÊN - 2015 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG Chanthiva MANIVONG TỐI ƯU MỘT SỐ CÂU LỆNH TRUY VẤN SQL VÀ ỨNG DỤNG Chuyên ngành: Khoa học máy tính Mã số: 60 48 01 01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Người hướng dẫn khoa học: TS.VŨ ĐỨC THÁI THÁI NGUYÊN - 2015 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn i ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TỐI ƯU MỘT SỐ CÂU LỆNH TRUY VẤN SQL VÀ ỨNG DỤNG Chuyên ngành: KHOA HỌC MÁY TÍNH Mã số: 60 48 01 01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Người hướng dẫn khoa học TS VŨ ĐỨC THÁI Học viên thực Chanthiva MANIVONG Thái nguyên – 2015 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn i ĐẠI HỌC THÁI NGUYÊN LỜI CAM ĐOAN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THƠNG Tơi cam đoan cơng trình nghiên cứu riêng tơi 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 tồn thể thầy 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 TS.Vũ Đức Thái, tạo điều kiện thuận lợi hướng dẫn em để hoàn thành luận văn Thái Nguyên, tháng 12 năm 2015 Tác giả Chanthiva MANIVONG Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn LỜI CẢM ƠN Để hồn thành chương trình cao học viết luận văn, nhận hướng dẫn, giúp đỡ góp ý nhiệt tình q thầy trường Đại học Công nghệ Thông tin Truyền thông – Đại học Thái Nguyên Tôi xin chân thành cảm ơn đến quý thầy cô trường Đại học Công nghệ Thông tin Truyền thông - Đại học Thái Nguyên, quý thầy cô Viện CNTT, đặc biệt thầy cô tận tình dạy bảo cho tơi suốt thời gian học tập trường Tôi xin gửi lời cảm ơn sâu sắc đến TS VŨ ĐỨC THÁI dành nhiều thời gian tâm huyết, bảo tận tình hướng dẫn nghiên cứu giúp tơi hồn thành luận văn Nhân đây, xin chân thành cảm ơn Ban giám hiệu, Phòng Đào tạo Sau Đại học trường Đại học Công nghệ Thông tin Truyền thông - Đại học Thái Nguyên tạo điều kiện để tơi học tập hồn thành tốt khóa học Mặc dù cố gắng hoàn thành luận văn tất nhiệt tình tâm huyết lực Tuy nhiên, luận văn khơng thể tránh thiếu sót, tơi mong nhận đóng góp q báu quý thầy cô bạn Lời cảm ơn sau tơi xin dành cho gia đình người bạn hết lòng quan tâm giúp đỡ, tạo điều kiện tốt để tơi hồn thành luận văn tốt nghiệp Tôi xin chân thành cảm ơn! Thái Nguyên, tháng 12 năm 2015 Học viên thực Chanthiva MANIVONG Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn MỤC LỤC LỜI CAM ĐOAN i MỤC LỤC ii DANH MỤC CÁC KÝ HIỆU v DANH MỤC CÁC CHỮ VIẾT TẮT vi DANH MỤC BẢNG BIỂU vii DANH MỤC HÌNH ẢNH viii LỜI NÓI ĐẦU CHƯƠNG NHỮNG VẤN ĐỀ CƠ BẢN VỀ CSDL VÀ CÂU LỆNH SQL 1.1 Cơ sở liệu quan hệ 1.1.1 Vai trò hệ thống thơng tin 1.1.2 Các chức hệ quản trị CSDL 1.1.3 Các thành phần hệ QTCSDL 1.2 Giới thiệu ngôn ngữ SQL 1.3 Ngôn ngữ định nghĩa liệu 1.4 Ngôn ngữ truy vấn liệu SQL (Structured Query Language) CHƯƠNG CÁC GIẢI PHÁP VÀ THUẬT TOÁN TỐI ƯU CÂU LỆNH SQL 14 2.1 Tối ưu hóa câu lệnh SQL 14 2.2 Một số nguyên tắc tối ưu 14 2.3 Một số chiến lược tối ưu 16 2.4 Một số thuật toán 18 2.4.1.Thuật toán Ingres 18 2.4.2 Thuật toán INGRES- QOA 25 2.4.3 Thuật toán System 25 2.4.4 Thuật toán R-QOA 27 2.5 Phương pháp phân rã SQL 30 2.5.1 Nôi dung phương pháp phân rã SQL 30 2.5.2 Những ưu nhược điểm phương pháp phân rã SQL 35 2.5.3 Ứng dụng phương pháp phân rã SQL 36 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 2.6 Phương pháp thay SQL 37 2.6.1 Bản chất vấn đề thay SQL 37 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn 2.6.2 Những ưu nhược điểm của phương pháp thay SQL 38 2.6.3 Ứng dụng phương pháp thay SQL 40 2.7 Thuật toán xử lý tiền tối ưu câu SQL 41 2.8 Một số kỹ thuật tối ưu 46 2.8.1 Nguyên nhân làm giảm tốc độ xử lý 46 2.8.2 Các câu truy vấn viết nghèo nàn só cách khắc phục: 46 CHƯƠNG CHƯƠNG TRÌNH THỬ NGHIỆM TỐI ƯU MỘT SỐ CÂU LỆNH 53 3.1 Mô tả toán 53 3.2 Thiết kế bảng liệu cho hệ thống 54 3.3 Thử nghiệm tiền tối ưu câu lệnh SQL 57 3.3.1 Xây dựng chương trình thử nghiệm 57 3.3.2 Thực thử nghiệm 58 KẾT LUẬN 67 TÀI LIỆU THAM KHẢO 68 Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn Câu lệnh truy vấn 2: In thông tin lý lịch sinh viên có mã sinh viên SV001 Nút “Lấy liệu thông thường” cho phép thực lấy liệu theo câu lệnh truy vấn chưa tối ưu Nút “Lấy liệu sau phân rã” cho phép thực lấy liệu theo câu truy vấn tối ưu Sau thực hiện, chương trình đưa kết tính thời gian thực câu lệnh truy vấn trước sau tối ưu Giải pháp: phần mô tả cách thức thực tối ưu câu lệnh truy vấn SQL cách tường minh Cơng cụ: Chương trình thực CSDL khơng có thực, qua phần Công cụ giúp thêm nhanh ghi vào bảng CSDL Với lượng CSDL lớn làm bật tính tối ưu giải thuật 3.3.2 Thực thử nghiệm Để nhận biết thay đổi tốc độ thực câu lệnh truy vấn SQL trước sau tiền tối ưu, cần phải có lượng liệu đủ lớn Chúng xây dựng công cụ tự động chèn liệu vào Cơ sở liệu Hình 3.3 Giao diện phần chèn liệu tự động Sau đó, chúng tơi thử nghiệm với câu lệnh truy vấn sau: Câu lệnh truy vấn 1: Lấy danh sách điểm tất sinh viên học môn Toán cao cấp bao gồm lần học lần học lại Câu lệnh thể sau: p: SELECT tblStudents.StdID, tblStudents.StdName, tblScroce.ScrMothlyTest, tblScroce.ScrFinalTest FROM tblStudents, tblScroce, tblSubject WHERE tblSubject.SubName="math"; Hình 3.4 Thực truy vấn lấy danh sách điểm sinh viên học mơn Tốn cao cấp Theo luật phân rã câu vấn tin p thay P1: SELECT tblSubject.SubID FROM tblSubject, tblNScroe WHERE tblSubname="math"; câu vấn tin đơn quan hệ Subject Kết TG1 có „MathCC‟ P2: SELECT tblStudents.StdID, tblStudents.StdName, tblScroce.ScrMothlyTest, tblScroce.ScrFinalTest FROM tblStudents, tblScroce, NScroe WHERE tblStudents.StdID= tblNscroe.StdID AND tblScroce.SubID = tblSubject.SubID; câu lệnh đa quan hệ, P2 phân rã thành P22: P22: SELECT tblStudents.StdID, tblStudents.StdName, tblScroce.ScrFinalTest, tblScroce.ScrMothlyTest FROM tblStudents, tblScroce WHERE tblNscroe.stdid= tblstudents.stdid; 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 khơng phải 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 tblStudents.StdID, tblStudents.STDNAME, '9' AS scrmothlytest, '9' AS scrfinaltest FROM tblStudents WHERE tblStudents.StdID="S001"; q2: SELECT tblStudents.StdID, tblStudents.STDNAME, '10' AS scrmothlytest, '10' AS scrfinaltest FROM tblStudents WHERE tblStudents.StdID="S001"; q3: SELECT tblStudents.StdID, Students.STDNAME, '10' AS scrmothlytest, '10' AS scrfinaltest FROM tblStudents WHERE tbl Students.StdID="S002"; Kết truy vấn cho ta danh sách điểm sinh viên học mơn Tốn cao cấp sau: Hình 3.5 Thực truy vấn lấy danh sách điểm sinh viên sau tối ưu Và thời gian thực câu lệnh truy vấn là: Khi câu lệnh chưa tối ưu: 0.2157369 giây Sau tối ưu: 0.1155684 giây Câu lệnh truy vấn 2: Cho biết thơng tin lý lịch sinh viên có mã sinh viên S001 Câu lệnh truy vấn lấy thông tin sinh viên sau: P: SELECT tblStudents.StdID, tblStudents.StdName, tblStudents.ClassID, tblStudents.Sex, tblStudents.Birthday, tblStudents.Address FROM tblStudents WHERE tblStudents.Birthday Between #2/15/1454# And #12/3/1454#)); Hình 3.6 Thực truy vấn lấy thơng tin lý lịch sinh viên Câu lệnh p phân sau: 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 ' Mr Somchit' AS Name, tblStudents.Stdname, '12345' AS Phone FROM tblStudents WHERE tblStudents.stdid="S001"; Q2: SELECT N'Miss Thipphaphone B' as Name, tblStudents.stdname, '3456' as Phone FROM tblStdents WHERE tblStudents.StdID ="S005"; kết truy vấn câu lệnh truy vấn là: Hình 3.7 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 Câu lệnh truy vấn 4: Cho biết sinh viên có điểm Toán từ trở lên Câu lệnh SQL ban đầu: SELECT Students.StdName,Subject.SubName,Scroe.F-scroe FROM Subject INNER JOIN (Students INNER JOIN Scroe ON Students.SubID=Scroe.SubID)ON (Subject.SubID=Students.SubID)AND (Subject.SubID = Scroe.SubID) WHERE (((Scroe.[F-croe])>="8")AND((Subject.SubName) ="math")); Câu lệnh tối ưu: SELECT Students.StdID, Students.StdName FROM Student WHERE StdID IN ( SELECT StdID FROM Score WHERE SubID IN ( SELECT SubID FROM Subject WHERE SubName="math") Kết quả: Đánh giá: Khi dùng câu lệnh SELECT sau thao tác liệu chọn nhỏ so với cách xử lý ban đầu, thao tác trung gian cần nhớ lưu trữ tốc độ xử lý nhanh Câu lệnh truy vấn 5: Cho biết sinh viên lớp IT8M1 có điểm thi >=5 Câu lệnh SQL ban đầu: SELECT Students.StdID, Students.StdName, Classroom.Classid, Classroom.ClassName, Subject.SubName, Scroe.[F-scroe] FROM Subject INNER JOIN ((Classroom INNER JOIN Students ON Classroom.Classid = Students.ClassID) INNER JOIN Scroe ON Students.StdID = Scroe.StdID) ON Subject.SubID = Scroe.SubID WHERE (((Classroom.ClassName)="it8M1") scroe])>="5")); AND ((Scroe.[F- Kết quả: Câu lệnh tối ưu: SELECT Students.StdID, Students.StdName, FROM Student WHERE (SELECT StdID FROM Score WHERE F-score>=”5”) AND (SELECT ClassID FROM Classrom WHERE (ClassName = ”IT8M1”) Kết quả: Đánh giá: Dùng câu lệnh tối ưu thêm hai câu lệnh SELECT phép AND Dữ liệu trung gian giảm thao tác việc truy xuất nhanh Tuy nhiên, CSDL không lớn nên việc tiết kiệm nhớ không đáng kể Kết cho giống câu lệnh ban đầu Câu lệnh truy vấn 6: Cho biết danh sách sinh viên lớp CB8M1 có điềm môn Visual Basic >=5 Câu lệnh SQL ban đầu: SELECT Students.StdID, Students.StdName, Classroom.Classid, Classroom.ClassName, Subject.SubName, Scroe.[F-scroe] FROM (Classroom INNER JOIN Students ON Classroom.Classid = Students.ClassID) INNER JOIN (Subject INNER JOIN Scroe ON Subject.SubID = Scroe.SubID) ON Students.StdID = Scroe.StdID WHERE (((Classroom.ClassName)="CB8M1") AND ((Scroe.[Fscroe])>="5") AND ((Subject.SubName)="Visual Basic")); Kết quả: Câu lệnh tối ưu: SELECT Students.StdID, Students.StdName, FROM Student WHERE ((SELECT StdID FROM Score WHERE (F-score>=”5”) AND (SELECT SubID FROM Subject WHERE SubName = “ VIsual Basic”)) AND (SELECT ClassID FROM Classrom WHERE (ClassName = ”IT8M1”) Kết quả: Đánh giá Dùng câu lệnh tối ưu thêm ba câu lệnh SELECT hai phép AND Dữ liệu trung gian giảm thao tác việc truy xuất nhanh Tuy nhiên, CSDL không lớn nên việc tiết kiệm nhớ không đáng kể Kết cho giống câu lệnh ban đầu 3.4 Đánh giá chung Vấn đề tối ưu hóa câu lệnh cần thiết nâng cao hiệu xử lý sở liệu lớn, cần tốc độ truy nhập xử lý nhanh Khi truyền thông mạng hay mơ hình Client –Server vấn đề làm nhỏ liệu trả có ý nghĩa to lớn Do vậy, qua thử nghiệm số kết ta rút kết luận hiệu việc tối ưu hóa câu lệnh Tuy nhiên câu lệnh SQL truy vấn phong phú đa dạng nên với câu hỏi truy vấn đến hai bảng liệu trở lên ta cần nghĩ đến việc tối ưu Trong thử nghiệm liệu không lớn nên việc đánh giá dựa thống kê số thao tác thực dung lượng tính tốn giá trị cột cách tương đối Để đánh giá xác cần có nhiều thử nghiệm với nhiều mơ hình liệu khác đa dạng Đó nhược điểm luận văn cần phát triển KẾT LUẬN Những kết đạt Qua việc thực đề tài nhóm nghiên cứu hiểu rõ nguyên nhân gây làm giảm tốc độ truy xuất, xử lý liệu nhu cầu tối ưu câu lệnh giúp tăng tốc độ xử lý giảm dung lượng liệu Đây tiêu chí quan trọng việc truy vấn từ xa truyền liệu qua mạng Bản chất vấn đề tối ưu câu lệnh truy vấn SQL mặt thuật toán ý nghĩa ứng dụng thực tế Từ chiến lược, thuật toán xây dựng sở liệu mơ cho tốn quản lý điểm Trường Cao đẳng Hữu nghị Viêng chăn – Hà Nội Thiết kế câu hỏi, câu lệnh SQL tối ưu Việc phân tích lý thuyết chạy thực nghiệm thuật toán cho thấy tác dụng việc tối ưu câu lệnh 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 - Thiết kế CSDL lớn nhiều để thử nghiệm khẳng định tối ưu thuật toán định lượng cụ thể Phát triển thêm giải pháp tối ưu sử dụng thực tế chiến lược khuyến cáo người dụng áp dụng - Xây dựng chương trình tự động tìm kiếm câu lệnh SQL 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 TÀI LIỆU THAM KHẢO * Tiếng Việt [1] 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 [2] 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 [3] Đỗ Xuân Lôi, Cấu trúc liệu Giải thuật, NXB Khoa học kỹ thuật [4] Lê Mạnh Thạnh, Hồng Bảo Hùng (2001), “Ngơn ngữ truy vấn hướng đối tượng tối ưu hoá truy vấn CSDL hướng đối tượng phương pháp biến đổi đại số”, Kỷ yếu Hội nghị khoa học kỷ niệm 25 năm thành lập Viện Công nghệ thông tin, Hà nội, tr 175–185 * Tiếng Anh [4] C Zaniolo and M.A Melkanoff, On the design of relational database syschema ACM Trans On Database systems 6:1 pp 1-47, 1984 [5] M.M Zloof, Query – by – example: a database language, IBM System J 16:4, pp 324-343, 1977 ... chọn đề tài: Tối ưu số câu lệnh truy vấn SQL ứng dụng làm luận văn tốt nghiệp Trong phạm luận văn mình, học viên tìm hiểu câu lệnh truy vấn SQL, nghiên cứu phương pháp tối ưu câu SQL để nâng... http://www.lrc.tnu.edu.vn Số hóa Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn i ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUY N THÔNG TỐI ƯU MỘT SỐ CÂU LỆNH TRUY VẤN SQL VÀ ỨNG DỤNG Chuyên... SQL 1.3 Ngôn ngữ định nghĩa liệu 1.4 Ngôn ngữ truy vấn liệu SQL (Structured Query Language) CHƯƠNG CÁC GIẢI PHÁP VÀ THUẬT TOÁN TỐI ƯU CÂU LỆNH SQL 14 2.1 Tối ưu hóa câu lệnh

Ngày đăng: 06/01/2019, 00:24