1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

66 281 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 66
Dung lượng 790,34 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/CSDL Cơ sở dữ liệu CPU Central Processing Unit Bộ xử lý trung tâm OOP Object Oriented Programming Lập trì

Trang 1

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN

THÔNG

NGUYỄN THỊ THU NGA

TIỀN TỐI ƯU CÁC CÂU SQL TỪ

CHƯƠNG TRÌNH NGUỒN

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY

TÍNH

THÁI NGUYÊN - 2014

Trang 2

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN

THÔNG

NGUYỀN THỊ THU NGA

TIỀN TỐI ƯU CÁC CÂU SQL TỪ

CHƯƠNG TRÌNH NGUÔN

Chuyên ngành: KHOA HỌC MÁY TÍNH

Mã số : 60 48 01

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY

TÍNH

Giáo viên hướng dẫn: PGS.TS LÊ HUY THẬP

Trang 3

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

LỜI CAM ĐOAN

Tôi cam đoan đây là công trình nghiên cứu của riêng tôi

Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được

ai công bố trong bất kỳ công trình nào khác

Qua đây em xin chân thành cảm ơn toàn thể các thầy cô trong khoa đào tạo sau đại học trường Đại học Công nghệ Thông tin và Truyền thông và đặc biệt là Thầy PGS.TS Lê Huy Thập, đã tạo điều kiện thuận lợi và hướng dẫn

em để hoàn thành luận văn này

Trang 4

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

LỜI CAM ĐOAN i

MỤC LỤC iv

DANH MỤC CÁC KÝ HIỆU vi

DANH MỤC CÁC CHỮ VIẾT TẮT vi

DANH MỤC BẢNG BIỂU viii

DANH MỤC HÌNH ẢNH ix

LỜI MỞ ĐẦU 1

CHƯƠNG 1: TỔNG QUAN VỀ NGÔN NGỮ SQL 3

1.1 Nghiên cứu ngôn ngữ SQL và một số dạng câu vấn tin SQL cơ bản 3

1.1.1 Giới thiệu ngôn ngữ SQL 3

1.1.2 Câu vấn tin SQL (Structured Query Language) 4

1.1.2.1 Thao tác với bảng 4

1.1.2.2 Khối lệnh Select 5

1.1.2.3 Tìm kiếm theo câu hỏi đơn giản 6

1.1.2.4 Các hàm thư viện 8

1.1.2.5 Tìm nhờ mệnh đề GROUP BY 9

1.1.2.6 Tìm kiếm và câu hỏi phức tạp 10

1.2 Nghiên cứu thuật toán Ingres và 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 và nhược điểm của phương pháp phân rã SQL 32

2.1.3 Ứng dụng của phương pháp phân rã SQL: 33

Trang 5

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

2.2.1 Phương pháp thay thế SQL 34

2.2.2 Những ưu và nhược điểm của của phương pháp thay thế SQL 36

2.2.3 Ứng dụng của phương pháp thay thế 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 3 CHƯƠNG TRÌNH THỬ NGHIỆM 43

3.1 Mô tả bài 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 hiện thử nghiệm 49

KẾT LUẬN 56

HƯỚNG PHÁT TRIỂN 56

TÀI LIỆU THAM KHẢO 57

Trang 6

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

Phép giao Phép hợp

Trang 7

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

CSDL Cơ sở dữ liệu

CPU Central Processing Unit (Bộ xử lý trung tâm)

OOP Object Oriented Programming (Lập trình hướng đối tượng)

QEP Query Executtion Plan (Chiến lược thực thi vấn tin)

SQL Structured Query Language (Ngôn ngữ truy vấn có cấu trúc)

OVQP One Variable Query processor (thể xử lý truy vấn một biến) ORQ Đơn quan hệ

MRQ Đa quan hệ

Trang 8

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

Bảng 1.1 Bảng nhân viên 15

Bảng 1.2.Bảng phân nhiệm 15

Bảng 1.3 Bảng dự án 15

Bảng 1.4 Bảng Trả lương 16

Bảng 2.1 Số liệu của quan hệ DanhHieu 29

Bảng 2.2 Số liệu quan hệ ThamGiaCM 29

Bảng 2.3 Số liệu quan hệ KhenThuong 30

Bảng 2.2.1 Kết quả danh sách người nhận huân chương 36

Bảng 2.2.2 Số liệu của quan hệ DanhHieu 39

Bảng 2.2.3 Số liệu quan hệ ThamGiaCM 39

Bảng 2.2.4 Số liệu quan hệ KhenThưởng 40

Bảng 2.2.5 Kết quả sau khi thực hiện thuật toán tối ưu 42

Bảng 3.1: Bảng sinh viên 44

Bảng 3.2: Bảng lớp 44

Bảng 3.3: Bảng môn học 45

Bảng 3.4: Bảng điểm 45

Bảng 3.5: Bảng điểm rèn luyện 45

Bảng 3.6: Bảng đối tượng 46

Bảng 3.7: Bảng gia đình 46

Bảng 3.8: Bảng học kỳ 46

Bảng 3.9: Bảng quan hệ 47

Bảng 3.10: Bảng thành viên gia đình 47

Trang 9

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

Hình 1.1 Đồ thị kết nối của câu truy vấn 23

Hình 1.2 Các thứ tự kết nối lựa chọn 24

Hình 3.1: Giao diện chính chương trình 48

Hình 3.2: Giao diện phần chèn dữ liệu tự động 49

Hình 3.3: Thực hiện truy vấn lấy danh sách điểm sinh viên 50

Hình 3.4 Thực hiện truy vấn lấy danh sách điểm sinh viên sau khi tối ưu SQL 52

Hình 3.5 Thực hiện truy vấn lấy thông tin sinh viên 53

Hình 3.6 Thực hiện truy vấn lấy thông tin sinh viên sau khi tối ưu SQL 55

Trang 10

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

LỜI MỞ ĐẦU

Trong tình hình hiện nay, các tổ chức, doanh nghiệp có nhiều chi nhánh

và đặt ở nhiều nơi với khối lượng dữ liệu lớn và đa người dùng, thường sử dụng cơ sở dữ liệu Do đó các phần mềm máy tính hỗ trợ nghiệp vụ của các tổ chức, doanh nghiệp cũng phải được tổ chức và phân tán một cách hợp lý Tuy nhiên, tốc độ xử lý của các phần mềm quản lý có dữ liệu lớn và nằm phân tán

sẽ trở nên vô cùng chậm, không đáp ứng được các yêu cầu của người dùng Điều này đòi hỏi các nhà phát triển phần mềm không những phải không ngừng xây dựng được những phần mềm lớn đa người dùng mà còn phải nghiên cứu và đưa ra các giải pháp tối ưu hóa câu lệnh, nhằm từng bước nâng cao tốc độ xử lý

và giảm giá thành của phần mềm

Qua tìm hiểu và nghiên cứu một số quy trình xây dựng phần mềm thì quá trình tối ưu hóa câu lệnh của các hệ chương trình rất có ý nghĩa vì kinh phí đầu tư của các tổ chức, doanh nghiệp cho các thiết bị phần cứng bước đầu còn rất hạn chế Cho nên giải pháp tối ưu hóa đến từng câu lệnh càng trở nên quan trọng hơn Điều này luôn có ý nghĩa lớn ngay cả khi các thiết bị phần cứng đáp ứng được yêu cầu

Nếu câu vấn tin SQL (Structured Query Language) đã được tối ưu trước khi thực hiện truy vấn sẽ nâng cao hiệu quả của chương trình và tiết

kiệm chi phí Cũng chính vì vậy, học viên quyết định chọn đề tài “Tiền tối ưu

các câu SQL từ chương trình nguồn” Trong phạm vi luận văn của 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 cao hiệu quả của chương trình Trong quá trình nghiên cứu học viên đã đề xuất phương pháp phân rã và thay thế câu lệnh SQL

Câu truy vấn đã được tối ưu sẽ nâng cao hiệu quả nếu nó thỏa mãn một số tiêu chuẩn cho trước nào đó Một số phương pháp phân tích và tối

ưu hóa các câu truy vấn dạng SQL đã được một số tác giả trong và ngoài

Trang 11

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

nước nghiên cứu Một số thuật toán cũng đã được công bố Tuy nhiên tất

cả đều dựa trên giả thuyết các câu vấn tin dạng SQL được lấy trực tiếp từ một chương trình nguồn hay người lập trình viết khi lập trình và tối ưu hóa một cách thủ công Một vấn đề đặt ra là một chương trình nguồn dạng tuần

tự mà trong đó có nhiều lệnh SQL có thể thỏa mãn điều kiện song song hóa

và chỉ được song song hóa và tối ưu hóa bởi phương pháp song song tự động Điều đó gây nhiều bất cập trong ứng dụng Việc tìm kiếm trong chương trình nguồn các lệnh SQL để hỗ trợ tối ưu hóa vấn tin là một vấn đề thời sự và cần thiết Trong khuôn khổ của luận văn các vấn đề sẽ lần lượt trình bày trong các chương

Chương 1: Sẽ trình bày các kiến thức cơ bản về một số phần mềm

tìm kiếm, tổng quan ngôn ngữ SQL, một số dạng câu vấn tin SQL, quá trình tối

Trang 12

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

CHƯƠNG 1: TỔNG QUAN VỀ NGÔN NGỮ SQL

1.1 Nghiên cứu ngôn ngữ SQL và một số dạng câu vấn tin SQL cơ bản

1.1.1 Giới thiệu ngôn ngữ SQL

Ngôn ngữ SQL (Structured Query Language) là ngôn ngữ truy vấn

mang tính cấu trúc, được sử dụng trong hầu hết các hệ quản trị cơ sở dữ liệu

để truy vấn và sửa đổi cơ sở dữ liệu Ngôn ngữ SQL hỗ trợ các truy vấn dựa trên các phép toán đại số quan hệ, đồng thời cũng chứa các lệnh sửa đổi cơ sở

dữ liệu và mô tả lược đồ cơ sở dữ liệu

SQL trước kia được gọi là SEQUEL, là một ngôn ngữ phi thủ tục được IBM phát triển ở San Jose, mục đích để sử dụng rộng rãi trong hệ thống cơ sở

dữ liệu thử nghiệm là System R Ngày nay, nó được sử dụng trong rất nhiều

hệ thống CSDL thương mại, và trong một số trường hợp, toàn bộ hệ thống cơ

sở dữ liệu được thương mại hoá với tên SQL

Tương tự các ngôn ngữ bậc cao khác, SQL được xây dựng dựa trên các chữ cái, các chữ số, các ký tự (ký hiệu phép toán, và các ký tự đặc biệt)

và một tập các từ khóa Ngôn ngữ SQL có thể sử dụng theo hai kiểu: kiểu trực tiếp và lập trình SQL trực tiếp cho phép thực hiện một truy vấn và nhận được kết quả ngay tức khắc SQL lập trình cho phép sử dụng SQL trong một chương trình viết bằng ngôn ngữ lập trình bậc cao khác (như C#, Java, ),

hoặc viết các chương trình con

Ngôn ngữ SQL được chia thành ba nhóm:

 Ngôn ngữ định nghĩa dữ liệu dùng để mô tả cấu trúc của cơ sở

dữ liệu (các bảng, các khung nhìn, các thuộc tính, các chỉ mục, )

 Ngôn ngữ thao tác dữ liệu cho phép thực hiện các thao tác trên cơ

sở dữ liệu như: cập nhật cơ sở dữ liệu và truy vấn, lấy ra các thông tin từ cơ

sở dữ liệu

Trang 13

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

 Ngôn ngữ kiểm soát dữ liệu bao gồm các lệnh dùng để quản lý các

thao tác, các quyền truy cập dữ liệu, kết nối với server

1.1.2 Câu vấn tin SQL (Structured Query Language)

Đây là một loại ngôn ngữ con dữ liệu quan hệ được xác nhận là rất mạnh Phép toán cơ bản trong SQL là phép ánh xạ, được mô tả về cú pháp như là khối SELECT - FROM - WHERE

Mệnh đề SELECT nghĩa là chọn các thuộc tính ra, hay còn gọi là thuộc tính kết quả, nếu không chỉ ra thuộc tính thì dùng dấu * có nghĩa là tất cả các thuộc tính của quan hệ đang được chỉ ra sau mệnh đề FROM Mệnh đề FROM để chỉ ra quan hệ cần cho việc xử lý Sau mệnh đề WHERE là một biểu thức điều kiện lọc dữ liệu (hay còn gọi là biểu thức logic)

Chú ý: Từ đây về sau chúng ta đồng nhất; quan hệ với bảng, thuộc tính

với cột (columns) hay trường (field), bộ (tupe) với bản ghi (record) hay hàng (Rows)

( S# Integer Not null,

Sname VarChar(8) Not Null,

Status Integer Not Null,

City VarChar (30) Not Null)

Create Table P

( P# Integer Not null,

Trang 14

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

Pname VarChar(10) Not Null,

Weight Integer Not Null,

Color VarChar ( 10) Not Null

)

Create Table SP

( S# Integer Not null,

P# Integer Not null,

Insert Into S(S#, Sname, Status, City) Values (1011, „Việt Tiên‟, 40,

„TP Hà Nội‟) Nêu vị trí các cột là cố định thì viết:

Insert Into S Values (1011, „Việt Tiến‟, 40, „TP Hà Nội‟)

Nếu quên vị trí các cột là cố định thì viết tên cột và các giá trị theo vị trí tương ứng Chẳng hạn:

Insert Into S (Status, s#, City, Sname ) Values (40, 1011, „TP Hà Nội‟,

„Việt Tiến‟, 40)

Chú ý: Đây là lệnh thêm dữ liệu nhưng cũng được dùng để nhập dữ

liệu

1.1.2.2 Khối lệnh Select

Cú pháp như một khối select - from - where

select: Xác định nội dung của các cột cần đưa ra kết quả

Trang 15

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

from: Xác định các bảng cần lấy thông tin ra

where: Lọc các bản ghi thoả yêu cầu để đƣa ra kết quả

Ngoài ra, để mở rộng khả năng của ngôn ngữ, khối select - from - where còn đƣợc bổ sung thêm các mệnh đề groupe by, having, order by Các hàm mẫu và một số phần mềm còn thêm cả mệnh đề contpute, for browse

Dạng tổng quát của khối select đuợc biểu diễn nhƣ sau:

SELECT [* | DISTINCT] danh-sách-chiếu

FROM danh_sách_tên_bảng | tên_các_View

Trong đó mệnh đề where dƣợc biểu diễn dạng:

WHERE [NOT] BiểuThức PhépSoSánh BiểuThức

WHERE [NOT] tên_cột [ NOT] LIKE xâu_ký_tự

WHERE [NOT] biểu_thức [NOT] BETWEEN biểu_thức AND

biểu_thức

WHERE [NOT] BiểuThức [NOT] IN ({danhSách | CâuHỏiCon})

WHERE EXISTS (CâuHỏiCon)

WHERE [NOT] BiểuThức PhépSoSánh { ANY | ALL (CâuHỏiCon)} WHERE [NOT] TênCột phépKếtNối TênCột

WHERE [NOT] biểu_thức_logic

WHERE [NOT] biểu_thức { AND | OR } [NOT] biểu_thức

1.1.2.3 Tìm kiếm theo câu hỏi đơn giản

Không điều kiện và câu hỏi chỉ liên quan tới 1 bảng

Trang 16

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

Trong mệnh đề select có danh sách chiếu Danh sách này xác định tên các cột cần có trong bảng kết quả Nếu xuất hiện là chọn hết các cột của bảng

Cho biết danh sách các nhà cung cấp

Cho biết các mặt hàng khác nhau đã đƣợc cung cấp

SELECT DISTINCT PName FROM SP

Tìm kiếm với điều kiện đơn giản

WHERE SNAME LIKE 'HOA%'

Trong đó ký hiệu ' % ' là thay thế cho một xâu con, dấu phân cách để thay thế cho một ký tự

A%B: xâu ký tự bất kỳ bắt đầu bằng chữ A và kết thúc bảng chữ B %A

Trang 17

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

: xâu ký tự bất kỳ có ký tự kết thúc là A

A_B : xâu gồm ba ký tự có ký tự thứ hai là bất kỳ

A_: xâu gồm hai ký tự có ký đầu là A

Xử lý ngày tháng

Ngoài các phép tính thông thường SQL còn có thể xử lý dữ liệu dạng ngày tháng

Ví dụ: Tìm những mã mặt hàng bán trước ngày 04-04-11 là 10 ngày SELECT P#

WHERE PRICE BETWEEN 1000 AND 2000

Tìm mã số các nhà cung cấp dã cung cấp ít nhất một trong các mặt hàng có mã P1, P2, P3

mà không cần quan tâm tới bất kỳ cột nào

Cho biết số lần mặt hàng P2 đã được cung cấp

SELECT COUNT ( * )

FROM SP

Trang 18

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

WHERE P# = „P2‟

Tìm hiệu số mặt hàng P1 bán một lần nhiều nhất và một lần ít nhất của hãng S1

SELECT MAX(QTY ) - MIN(QTY)

FROMSP

WHERE S# = 'Sl' AND P# = 'P1‟

Cho biết danh sách mã số mặt hàng đã được cung cấp

SELECT COUNT ( DISTINCT p# )

Sau mệnh đề này bảng SP được ấy ra sau đó phân thành nhóm theo mã

số S#, có nghĩa là các hộ có cùng giá trị S# được sắp xếp liên tiếp nhau, hết nhóm này đến nhóm khác

Tìm kiếm sử dụng mệnh đề HAVING

HAVING thường được sử dụng cùng group by Sau HAVING là biểu thức điều kiện Biểu thức điều kiện này không tác động vào toàn bảng được chỉ ra sau from mà chỉ tác động lần lượt từng nhóm các bản ghi đã chỉ ra tại

mệnh đề group by

Ví dụ: Tìm mã số những nhà cung cấp đã cung cấp ít nhất hơn hai mặt hàng

Trang 19

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

Mệnh đề order By nếu đứng sau group by thì miền tác động của sắp xếp

là trong từng nhóm của cột đƣợc chỉ ra trong group by Nếu cột sắp xếp có ở mệnh đề select thì trong mệnh đề order by có thể chỉ cần chỉ ra số thứ tự của cột đó trong danh sách chiếu là đủ

1.1.2.6 Tìm kiếm và câu hỏi phức tạp

Tìm kiếm với nhiều bảng qua việc sử dụng ánh xạ lồng nhau hoặc qua phép kết nối

Tìm những nhà cung cấp đã cung cấp ít nhất một mặt hàng nào đó

Trang 20

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

SELECT PNAME

FROM P

WHERE P# = ANY (SELECT P# FROM SP WHERE S# = 'S1 ‟)

Tìm tên những hãng cung cấp ít nhất một mặt hàng màu đỏ

Trang 21

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

WHERE S# <> ALL (SELECT S# FROM SP)

1.2 Nghiên cứu thuật toán Ingres và System tập trung

1.2.1 Thuật toán Ingres

Ý tưởng thuật toán: Thuật toán bao gồm hai giai đoạn phân rã và tối

Trang 22

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

ưu hoá Đầu tiên, phân rã câu truy vấn dạng phép toán quan hệ thành các

phần nhỏ hơn Câu truy vấn trước tiên được phân rã thành một chuỗi các truy vấn có một quan hệ chung duy nhất (chính xác là một biến bộ duy nhất)

Sau đó mỗi câu truy vấn đơn quan hệ được xử lí bởi một “thể xử lý truy

vấn một biến” (one-variable query processor-OVQP), OVQP tối ưu hoá việc

truy xuất đến một quan hệ bằng cách chọn, dựa trên vị từ phương pháp truy xuất hữu hiệu nhất đến quan hệ đó (như dùng chỉ mục hoặc quét tuần tự) Thí

dụ nếu vị từ có dạng <A=value>, một chỉ mục đã có trên thuộc tính A sẽ được dùng Tuy nhiên, nếu vị từ có dạng <A value>, một chỉ mục trên A không có tác dụng gì, và quét tuần tự sẽ được dùng

Thuật toán trước tiên sẽ thực hiện các phép toán đơn ngôi (đơn quan hệ) và cố gắng giảm thiểu kích thước của các kết quả trung gian khi xếp thứ

tự các phép toán hai ngôi (đa quan hệ)

Chúng ta kí hiệu qi-1 qi để biểu thị câu truy vấn q được phân rã thành hai câu truy vấn con qi-1và qi, trong đó qi-1 được thực hiện trước và kết quả

sẽ được qi sử dụng Cho trước câu truy vấn q có n quan hệ, OVQP sẽ phân rã

q thành n câu truy vấn con q1 q2 qn phân rã này sử dụng hai kỹ thuật

cơ bản: tách (detachment) và thay thế (substitution) Tách là kỹ thuật được

OVQP sử dụng để tách câu truy vấn q thành các truy vấn q‟ q” dựa trên một quan hệ chung là kết quả của q‟ Nếu câu truy vấn q được biểu diễn bằng SQL có dạng:

SELECT R1.A1, R2.A2, R3.A3, ., Rn.An

Trang 23

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

vấn như thế có thể phân rã thành hai câu truy vấn con, q‟ theo sau là q” qua phép tách quan hệ chung R1:

q‟:

SELECT R1.A1 INTO R‟1 FROM R1

WHERE P1(R1.A1) Trong đó R‟1 là một quan hệ tạm thời chứa các thông tin cần thiết để thực hiện tiếp tục câu vấn tin:

q”: SELECT R2 A2, ., RnAn

FROM R‟1, R2, , Rn

WHERE P1(R1.A1, R2.A2, ., Rn.An)

Bước này có tác dụng giảm kích thước của quan hệ trên đó câu truy vấn q” được định nghĩa Hơn nữa, quan hệ R‟1 mới được tạo ra có thể lưu vào cấu trúc đặc biệt nhằm tăng tốc độ cho các câu truy vấn con theo sau Chẳng hạn lưu R‟1 trong một tập tin băm trên thuộc tính nối của q” làm cho việc xử

lý nối hiệu quả hơn, phép tách sẽ rút ra các phép toán chọn, thường là những phép có tính chọn lọc cao Vì thế phép tách thực hiện một cách có hệ thống mỗi khi có thể được

Ví dụ minh họa:

Trên CSDL “CONG_TY”, là một CSDL dùng để quản lý công việc của một công ty phần mềm, bao gồm các quan hệ sau đây:

Trang 24

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

Lê Trần Dũng Mai Thị Hoa Phan Ái Khanh Trịnh Lê Thanh

Phân tích HT Lập trình viên Phân tích HT Phân tích HT Lập trình viên

Kỹ sƣ điện Phân tích HT Bảng 1.1 Bảng nhân viên

Quản lý Phân tích Phân tích

Kỹ thuật Lập trình Quản lý Quản lý

Kỹ thuật Quản lý

Trang 25

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

TLUONG

Kỹ sƣ điện Phân tích HT Lập trình viên Thiết kế DL

Để minh hoạ kỹ thuật tách chúng ta có thể áp dụng nó cho câu truy vấn

sau:“Cho biết tên của các nhân viên đang làm việc trong dự án có tên CSDL”

trên cơ sở dữ liệu đã nói ở trên, câu truy vấn này có thể đƣợc diễn tả bằng SQL nhƣ sau:

q1: SELECT NHANVIEN HO_TEN

FROM NHANVIEN, PHANNHIEM, DUAN

WHERE NHANVIEN.MANV = PHANNHIEM.MANV

AND PHANNHIEM.MADA = DUAN.MADA AND TENDA = “CSDL”

Sau khi tách các phép chọn, câu truy vấn q1 đƣợc thay bởi q11 theo sau là q‟, trong đó TGIAN1 là quan hệ trung gian

q11: SELECT DUAN.MADA INTO TGIAN1

PHANNHIEM.MANV AND PHANNHIEM.MADA =TGIAN1.MADA

Trang 26

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

Các bước tách tiếp theo cho q‟ có thể tạo ra:

q12: SELECT PHANNHIEM.MANV INTO TGIAN2

FROM PHANNHIEM, TGIAN1 WHERE PHANNHIEM.MADA =TGIAN1.MADA

q13: SELECT NHANVIEN HO_TEN

FROM NHANVIEN, TGIAN2 WHERE NHANVIEN.MANV = TGIAN2.MANV

Chú ý có thể có những câu truy vấn con khác nữa

Truy vấn q1 đã được rút gọn thành chuỗi truy vấn q11 q12 q13 Truy vấn q11 là loại đơn quan hệ và có thể cho chạy bởi OVQP Tuy nhiên các truy vấn q12 và q13 không phải loại đơn quan hệ và cũng không thể rút gọn hơn nữa bằng phép tách.Các câu truy vấn đa quan hệ không thể tách tiếp

được nữa (chẳng hạn q12 và q13 trong thí dụ trên) được gọi là bất khả giản

(irreducible) Các truy vấn bất khả giản được biến đổi thành câu truy vấn đơn

quan hệ nhờ phép thế bộ (tuple substitution) Cho câu truy vấn n-quan hệ q,

các bộ của một biến được thay bằng các giá trị của chúng, tạo ra được một tập các truy vấn (n-1) biến Phép thế bộ được tiến hành như sau:

Trước tiên chọn một quan hệ trong q để thay thế Gọi R1 là quan hệ đó Thế thì với mỗi bộ t1i trong R1, các thuộc tính được tham chiếu trong q được thay bằng các giá trị thật sự trong t1i, tạo ra một câu truy vấn q‟ có (n-1) quan hệ Vì vậy trong số câu truy vấn q‟ được sinh ra bởi phép thế bộ là card(R1) Phép thế bộ có thể tóm tắt như sau:

q(R1, R2, , Rn) được thay bằng {q‟(t1i, R2, R3, , Rn), t1i R1}

Vì thế đối với mỗi bộ thu được, câu truy vấn con được xử lý đệ quy

Trang 27

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

bằng phép thế nếu nó chưa bất khả giản

Ví dụ minh họa:

Xét tiếp câu truy vấn q13

SELECT NHANVIEN HO_TEN

FROM NHANVIEN, TGIAN2

Quan hệ được định nghĩa bởi biến TGIAN2 chạy trên thuộc tính duy nhất MANV Giả sử rằng nó chỉ chứa hai bộ: <E1> và <E2> Phép thế cho TGIAN2 tạo ra hai câu truy vấn con đơn quan hệ:

q131: SELECT NHANVIEN HO_TEN

WHERE NHANVIEN.MANV = “E1”

q132: SELECT NHANVIEN HO_TEN

FROM NHANVIEN

WHERE NHANVIEN.MANV = “E2”

Sau đó chúng có thể được OVQP quản lý

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 vấn bất khả giản còn lại sau phép tách sẽ được sử lý bằng phép thế bộ Câu truy vấn bất khả giản, được kí hiệu là MRQ‟ Quan hệ nhỏ nhất với lực lượng của nó đã được biết

từ kết quả của câu truy vấn trước đó sẽ được chọn để thay thế Phương pháp đơn giản này cho phép tạo ra sẽ do OVQP xử lý, chọn ra đường truy xuất tốt nhất đến quan hệ theo lượng từ hoá vấn tin

Trang 28

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

Thuật toán INGRES- QOA

Input: MRQ: câu truy vấn đa quan hệ có n quan hệ

Output: Câu truy vấn tối ƣu

Output’ run(ORQ i) {thực hiện ORQi }

Output output output’ {trộn tất cả các kết quả lại}

MRQ” thay giá trị cho t trong MRQ‟

Output’ INGRES-QOA(MRQ”) {gọi đệ qui}

Output output output’ {trộn tất cả các kết quả lại}

End-for

End-if

End {INGRES-QOA}

Trang 29

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

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, System R chỉ thực hiện nếu điều đó dẫn đế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 xây dựng động để khi hai nối tương đương nhau nhờ hoán vị, chỉ có nối có chi phí thấp nhất mới được giữ lại Ngoài ra các chiến lược phải lấy tích Descartes đều bị loại bỏ ngay khi có thể

Chi phí của một chiến lược dự tuyển là tổ hợp các chi phí xuất nhập và chi phí CPU Ước lượng các chi phí này (vào lúc biên dịch) dựa trên mô hình chi phí có đưa ra các công thức tính chi phí cho mỗi thao tác ở mức thấp (thí

dụ thao tác chọn bằng chỉ mục B-cây) Đối với phần lớn các phép toán (ngoại trừ phép chọn với đối sánh chính xác), công thức tính chi phí đều dựa vào 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à phương pháp có chi phí thấp nhất) Thứ hai đối với mỗi quan hệ R, thứ

Trang 30

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

tự nối tốt nhất sẽ được ước lượng, trong đó trước tiên R sẽ được truy xuất bằng cách sử dụng phương pháp truy xuất đơn quan hệ tốt nhất

Khi xét các nối, chúng ta có hai thuật toán, và một trong hai đã tối ưu trong ngữ cảnh đã cho Đối với nối của hai quan hệ, quan hệ được đọc trước gọi là quan hệ ngoại cảnh (external relation), còn quan hệ kia, là quan hệ có các bộ được tìm dựa theo các giá trị có được từ quan hệ ngoại cảnh sẽ được gọi là quan hệ nội sự (internal relation) Chọn phương pháp nối ở đây là xác định đường truy xuất có chi phí thấp nhất đến nội sự

Phương pháp thứ nhất được việc thiết kế cấu trúc database gọi là lặp lồng (nested loop) tạo ra tích của hai quan hệ Đối với mỗi bộ của ngoại cảnh, từng bộ của nội sự thoả vị từ nối sẽ được truy xuất lần lượt để tạo ra quan hệ kết quả Một chỉ mục trên một thuộc tính nối là một đường truy xuất rất hiệu quả đối với nội sự Khi không có chỉ mục với các quan hệ tương ứng có n1

và n2 trang, chi phí thuật toán tỷ lệ với n1* n2, quá cao khi n1 và n2 lớn

Phương pháp thứ hai được gọi là nối trộn (merge join) gồm có trộn hai quan hệ đã sắp theo thuộc tính nối Chỉ mục trên thuộc tính nối có thể được sử dụng làm đường truy xuất Nếu điều kiện nối là đẳng thức, chi phí nối hai quan hệ n1 và n2 trang tỷ lệ với n1+ n2 Vì thế phương pháp luôn luôn được chọn cho nối bằng và khi các quan hệ đã được xếp thứ tự trước đó Nếu một hoặc cả hai quan hệ đều chưa được sắp, chi phí của thuật toán nối lặp lồng sẽ rất đáng kể so với chi phí của phép nối sắp trộn Chi phí sắp n trang tỉ lệ nlogn Nói chung thuật toán nối trộn sẽ hữu ích khi cần nối các quan hệ lớn

Phiên bản đơn giản của thuật toán tối ưu hoá của System R cho câu truy vấn chọn- chiếu- nối được trình bày trong thuật toán dưới đây có hai vòng Vòng đầu tiên chọn ra đường truy xuất một quan hệ tốt nhất đến mỗi đến mỗi quan hệ 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

Trang 31

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

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 chiến lƣợc cần kiểm tra có cận trên là 2n

chứ không phải là n!

Thuật toán R-QOA

Input: QT: cây truy vấn có n quan hệ

Output: Câu truy vấn tối ƣu

Chúng ta hãy minh hoạ thuật toán này với câu truy vấn q1 trên CSDL

mẫu đã nêu trên

Trang 32

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

q1: SELECT

FROM

NHANVIEN.HO_TEN NHANVIEN, PHANNHIEM.MANV WHERE NHANVIEN.MANV=PHANNHIEM.MANV

AND PHANNHIEM.MADA=DUAN.MADA AND TENDA= “CSDL”

Để dễ trình bày chúng ta ký hiệu:

E=NHANVIEN, G= PHANNHIEM và J=DUAN

Đồ thị nối của q1 được trình bày trong hình dưới đây Để cho đơn giản, nhãn MANV trên cạnh E G thay cho vị từ E.MANV =G.MANV và nhãn trên cạnh G -J biểu thị cho vị từ G.MADA=J.MADA chúng ta giả sử

có các chỉ mục sau:

E chỉ mục trên MANV

G chỉ mục trên MADA

J chỉ mục trên MADA và một chỉ mục khác trên TENDA

Chúng ta giả sử rằng vòng lặp đầu tiên của thuật toán chọn ra các đường truy xuất một quan hệ như sau (xem Hình 1.1):

E: Quét tuần tự (bởi vì không có phép chọn nàotrên E)

G: Quét tuần tự (bởi vì không có phép chọn nào trên G)

J: Chỉ mục trên TENDA (do có một phép chọn trên J theo TENDA)

Hình 1.1 Đồ thị kết nối của câu truy vấn

Cấu trúc động của cây các chiến lược lựa chọn như hình 1.2 Các phép

toán có đánh dấu "loại bỏ" (pruned) sẽ được loại bỏ tự động Mức một của

cây chỉ ra phương pháp truy cập tốt nhất Các chiến lược (E J) và (J E) bị

Trang 33

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/

loại bỏ Giả sử (E G) và (G J) có chi phí cao hơn (G E) và (J G) tương ứng Như vậy chúng có thể bị loại bỏ, vì bằng cách hoán vị chúng ta có các thứ tự kết nối tuơng đương tốt hơn Mức ba đưa ra hai khả năng còn lại, thứ tự kết nối tốt nhất là chi phí ít nhất của ((G E) J) và ((J G) E)

Cuối cùng dựa vào chỉ mục trên thuộc tính chọn và truy nhập rực tiếp đến các bộ kết nối của G và E, vì vậy phương pháp truy nhập sau được chọn:

Hình 1.2 Các thứ tự kết nối lựa chọn

SQL là một ngôn ngữ hỗ trợ đắc lực trong việc tìm kiếm thông tin Tuy nhiên, nó là một trong những yếu tố chính ảnh hưởng trực tiếp đến hiệu suất làm việc của ứng dụng, đóng vai trò quan trọng tương tự như việc thiết kế cấu trúc database Tùy vào cách diễn đạ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

(G E) J (J G) E

Ngày đăng: 20/11/2014, 19:59

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[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à vẽ cây toán tử", Tạp chí khoa học ISSN 1859-2355, Tập N19/2012, Số 19, 213 – 221, 2012 Sách, tạp chí
Tiêu đề: Tìm câu SQL từ chương trình nguồn, chuyển sang AQL và vẽ cây toán tử
[2] Lê Huy Thập, Nguyễn Thành Trung, Nguyễn Văn Lƣợng, "Tìm kiếm văn bản dựa vào cụm từ và chuyển vào cơ sở dữ liệu", Tạp chí khoa học ISSN 1859-2355, Tập N25/2013, Số 25, 131 – 139, 2013 Sách, tạp chí
Tiêu đề: Tìm kiếm văn bản dựa vào cụm từ và chuyển vào cơ sở dữ liệu
[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 Sách, tạp chí
Tiêu đề: Giáo trình kỹ thuật lập trình Tập 1
Tác giả: Lê Huy Thập
Nhà XB: NXB KHOA HỌC TỰ NHIÊN VÀ CÔNG NGHỆ
Năm: 2008
[4] Đỗ Xuân Lôi, Cấu trúc dữ liệu và Giải thuật, NXB Khoa học và kỹ thuật Sách, tạp chí
Tiêu đề: Cấu trúc dữ liệu và Giải thuật
Nhà XB: NXB Khoa học và kỹ thuật
[5] M.Tamer Ozsu, Patrick Valduriez. Nguyên lý các hệ cơ sở dữ liệu phân tán. Trần Đức Quang biên dịch. NXB Thống kê, 1999 Sách, tạp chí
Tiêu đề: Nguyên lý các hệ cơ sở dữ liệu phân tán
Nhà XB: NXB Thống kê
[6] Robert Sedgewick, Cẩm nang thuật toán Vol.1 and Vol.2. NXB Khoa học và Kỹ thuật, 2001 Sách, tạp chí
Tiêu đề: Cẩm nang thuật toán Vol.1 and Vol.2
Tác giả: Robert Sedgewick
Nhà XB: NXB Khoa học và Kỹ thuật
Năm: 2001
[7] Ellis Horowitz, Sartaj Sahani, Fundamentals of data structures, Computer Science Press INC, 1976 Sách, tạp chí
Tiêu đề: Fundamentals of data structures
[8] A. V. Aho, J.E. Hopcroft, J.D. Ulmann, Data Structures and algorithms, Ađition Wesley – 1983 Sách, tạp chí
Tiêu đề: Data Structures and algorithms
Tác giả: A. V. Aho, J.E. Hopcroft, J.D. Ulmann
Nhà XB: Ađition Wesley
Năm: 1983
[9] S.B. Yao, Optimization of query evalution algorithms, ACM Trans. On Database systems 4:2 pp 133-155, 1979 Sách, tạp chí
Tiêu đề: Optimization of query evalution algorithms
[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 Sách, tạp chí
Tiêu đề: On the design of relational database syschema
Tác giả: C. Zaniolo, M.A. Melkanoff
Nhà XB: ACM Trans. On Database systems
Năm: 1984
[11] M.M. Zloof, Query – by – example: a database language, IBM System J 16:4, pp 324-343, 1977 Sách, tạp chí
Tiêu đề: Query – by – example: a database language
Tác giả: M.M. Zloof
Nhà XB: IBM System J
Năm: 1977

HÌNH ẢNH LIÊN QUAN

Hình 1.2  Các thứ tự kết nối lựa chọn - Tiền tối ưu các các SQL chương trình nguồn
Hình 1.2 Các thứ tự kết nối lựa chọn (Trang 33)
BẢNG SINH VIÊN  Tên trường  Kiểu dữ liệu  Diễn giải - Tiền tối ưu các các SQL chương trình nguồn
n trường Kiểu dữ liệu Diễn giải (Trang 53)
Bảng 3.3: Bảng môn học - Tiền tối ưu các các SQL chương trình nguồn
Bảng 3.3 Bảng môn học (Trang 54)
BẢNG MÔN HỌC  Tên trường  TrườngKiểu dữ  Diễn giải - Tiền tối ưu các các SQL chương trình nguồn
n trường TrườngKiểu dữ Diễn giải (Trang 54)
Bảng 3.6: Bảng đối tƣợng - Tiền tối ưu các các SQL chương trình nguồn
Bảng 3.6 Bảng đối tƣợng (Trang 55)
Bảng 3.10: Bảng thành viên gia đình - Tiền tối ưu các các SQL chương trình nguồn
Bảng 3.10 Bảng thành viên gia đình (Trang 56)
Bảng 3.9: Bảng quan hệ - Tiền tối ưu các các SQL chương trình nguồn
Bảng 3.9 Bảng quan hệ (Trang 56)
Hình 3.1: Giao diện chính chương trình - Tiền tối ưu các các SQL chương trình nguồn
Hình 3.1 Giao diện chính chương trình (Trang 57)
Hình 3.2: Giao diện phần chèn dữ liệu tự động - Tiền tối ưu các các SQL chương trình nguồn
Hình 3.2 Giao diện phần chèn dữ liệu tự động (Trang 58)
Hình 3.3: Thực hiện truy vấn lấy danh sách điểm sinh viên - Tiền tối ưu các các SQL chương trình nguồn
Hình 3.3 Thực hiện truy vấn lấy danh sách điểm sinh viên (Trang 59)
Hình 3.4 Thực hiện truy vấn lấy danh sách điểm sinh viên sau khi tối ưu  SQL - Tiền tối ưu các các SQL chương trình nguồn
Hình 3.4 Thực hiện truy vấn lấy danh sách điểm sinh viên sau khi tối ưu SQL (Trang 61)
Hình 3.5 Thực hiện truy vấn lấy thông tin sinh viên - Tiền tối ưu các các SQL chương trình nguồn
Hình 3.5 Thực hiện truy vấn lấy thông tin sinh viên (Trang 62)
Hình 3.6 Thực hiện truy vấn lấy thông tin sinh viên sau khi tối ưu SQL - Tiền tối ưu các các SQL chương trình nguồn
Hình 3.6 Thực hiện truy vấn lấy thông tin sinh viên sau khi tối ưu SQL (Trang 64)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w