1. Trang chủ
  2. » Giáo án - Bài giảng

xử lý và tối ưu câu truy vấn

32 1,2K 18

Đ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 32
Dung lượng 314,5 KB

Nội dung

Một phương án thực thi câu hỏi xác định một dãy các bước cho việc định giá câu hỏi,trong đó mỗi bước ứng với một phép toán của đại số quan hệ cùng với chú giải về phươngpháp được dùng để

Trang 1

CHƯƠNG 6 XỬ LÝ VÀ TỐI ƯU CÂU TRUY VẤN

1 Quá trình xử lý và tối ưu câu truy vấn.

Khi nhận được một câu hỏi của người dùng, bộ xử lí câu hỏi trước hết kiểm tra xemcâu hỏi có được viết đúng cú pháp hay không, các quan hệ và các thuộc tính trong câu hỏi

có trong CSDL hay không Tiếp đó, nếu câu hỏi được chấp nhận, một phương án thực thi(execution plan) cho câu hỏi được phát sinh

Một phương án thực thi câu hỏi xác định một dãy các bước cho việc định giá câu hỏi,trong đó mỗi bước ứng với một phép toán của đại số quan hệ cùng với chú giải về phươngpháp được dùng để định giá phép toán đó Chẳng hạn, phép kết nối có thể được định giábằng các phương pháp lặp lồng, sắp xếp trộn, kết nối băm…

Mục đích của tối ưu hóa câu hỏi là tìm một phương án thực thi trong số tất cả cácphương án tương đương (theo nghĩa luôn cho cùng một kết quả), có thể có, được định giávới chi phí nhỏ nhất Trong hệ CSDL tập trung, chi phí cho việc định giá một câu hỏi làtổng của chi phí nhỏ nhất Trong hệ CSDL tập trung, chi phí cho việc định giá một câu hỏi

là tổng của chi phí I/O và chi phí CPU Chi phí I/O (Vào/ra) do việc truyền dữ liệu giữa bộnhớ chính và bộ nhớ thứ cấp (thường là đĩa từ) vì trong phần lớn các ứng dụng, dữ liệuthường quá lớn và không thể chứa hết trong bộ nhớ chính Với phần lớn các thao tácCSDL, chi phí I/O là chi phí có tính chi phối Để giảm chi phí I/O thường phải sử dụng cáccấu trúc dữ liệu đặc biệt, như các cây B+ chẳng hạn

Hình 1 dưới đây chỉ rõ các bước khác nhau của việc xử lí một câu hỏi được viếttrong một ngôn ngữ hỏi bậc cao, chẳng hạn SQL

Trang 2

Hình 1

SQL Query

Parse query

Select logical query plan

Select physical plan

Execute plan

Query expression tree

Logical query plan tree

Physical query plan tree

Answer Parse tree

Logical query plan

Improve logical query plan

Logical query plan + sizes

{P1, P2, … }

{(P1, C1), (P2,C2) … }

Pi statistic

s

Trang 3

Nói chung, số các phương án thực thi tương đương đối với một câu hỏi cho trước làrất lớn và phụ thuộc vào số m các phép toán (thao tác) trong câu hỏi và số k các phươngpháp khác nhau có thể được dùng để định giá mỗi một phép toán đó Khi đó, số cácphương án thực thi có thể lên tới (m!).k.m Tập tất cả các phương án thực thi tương đương

là không gian tìm kiếm cho tối ưu hóa câu hỏi

Vì vậy, bài toán tìm phương án thực thi tối ưu (tốt nhất) là một bài toán rất khó, tốnrất nhiều thời gian, đòi hỏi phải biết thông tin về các tệp được cài đặt ra sao, thậm chí cầnbiết cả nội dung của các tệp Đó là những thông tin thường không có sẵn đầy đủ trong thưmục của hệ quản trị cơ sở dữ liệu (hệ QTCSDL)

Do đó, tối ưu hóa câu hỏi trong nhiều trường hợp được hiểu là tìm một phương ánthực thi câu hỏi tương đối hiệu quả, gần với tối ưu

Xét ví dụ sau, cho hai lược đồ quan hệ R(AB) và S(CD) Giả sử ta có yêu cầu sau:

“Đưa ra thuộc tính A của các bộ thoả mãn điều kiện B=C và D=100”

Câu hỏi được viết dưới dạng ngôn ngữ đại số quan hệ như sau:

A(B=C and D=100(RS))Nếu đưa phép chọn D=100 vào bên trong phép tích Đề - các, sẽ được:

A(B=C(RD=100(S)))

và sau đó chuyển phép chọn B=C của tích Đề - các thành phép kết nối bằng sẽ được:

)((R D 100 S

bộ nhớ thứ cấp như băng đĩa từ)

Rõ ràng phép tính cuối cùng đỡ tốn kém thời gian hơn rất nhiều Cụ thể chỉ chọn trênquan hệ S những bộ có giá trị D100 thì số bộ lấy ra sẽ ít hơn toàn bộ số bộ của cả quạn

hệ S Số bộ được chọn ra xong từ S mới đem kết nối với quan hệ trên R Phép kết nối nàychỉ chọn ra bộ nào thuộc R mà có giá trị tại B bằng bộ có giá trị tại C mới được lấy ra Nhưvậy chi phí thực hiện sẽ tốt hơn lấy tích Đề - các của R  S, rồi mới chọn trong kết quảnhững bộ có giá trị tại B bằng giá trị tại C

Qua ví dụ đơn giản trên đủ để cho thấy tối ưu hóa là cần thiết

Quá trình tối ưu hóa câu hỏi thường được chia làm hai pha: tối ưu hóa logic và tối ưu

hóa vật lí Tối ưu hóa logic cho phép viết lại câu hỏi dưới dạng chuẩn tắc đơn giản và được tối ưu hóa về mặt logic, cóc nghĩa không tính tới các chi phí truy cập dữ liệu Tối ưu hóa

vật lí thực hiện chọn các thuật toán tốt nhất cho các toán tử mức thấp có tính tới kích thước

dữ liệu và các đường truy cập sẵn có

Tối ưu hóa logic được thực hiện ở mức của đại số quan hệ, trong khi tối ưu hóa vật lícho phép, nói riêng, thiết lập các chú giải Tối ưu hóa vật lí cần tới một mô hình chi phí để

Trang 4

ước lượng chi phí của mỗi phương án thực thi nhằm chọn được phương án tối ưu hay gầntối ưu

Phần còn lại của chương được tổ chức như sau:

Mục 2: Trình bày về các mục tiêu của tối ưu hóa

Mục 3 Dành cho việc nghiên cứu các phương pháp chính của tối ưu hóa logic nhằmtìm câu hỏi đơn giản nhất tương đương với câu hỏi đã cho và sử dụng một phương phápheuristic cấu trúc lại cây đại số để xây dựng một dạng chuẩn tắc

Mục 4 Nghiên cứu các thuật toán khác nhau truy cập vật lí tới dữ liệu bao gồm phépchọn, phép chiếu, phép kết nối

Mục 5 Mô tả mô hình chi phí

Cuối cùng là tóm lược chương

Một số phần trong chương này được trích dẫn trong [1]

2 Các mục tiêu của tối ưu hóa

2.1 Câu hỏi tĩnh và câu hỏi động

Trước hết bộ tối ưu hóa cần phân biệt được hai loại câu hỏi này

Câu hỏi tĩnh (Static query): là câu hỏi SQL thường được tích hợp vào một chương

trình ứng dụng trong đó mã lệnh thực hiện nó đã biết được cố định, thường được thực hiệnnhiều lần Loại câu hỏi này đáng được tối ưu hóa vì việc tối ưu hóa được thực hiện chỉmột lần khi biên dịch chương trình có chứa câu hỏi, để sau đó nó được thực hiện hàngnghìn, hàng vạn lần Câu hỏi SQL có thể được tham số hóa, các giá trị hằng được truyềnbởi các biến của chương trình Vì vậy, bộ tối ưu hóa phải có khả năng tối ưu hóa các câuhỏi được tham số hóa, chẳng hạn một tân từ như SO_LUONG = $x, trong đó x là một biếnchương trình

Câu hỏi động (Dynamic query): là câu hỏi SQL thường được thiết lập theo kiểu

tương tác (trực tuyến) với mã không biết trước, thường chỉ được thực hiện một lần Vớiloại câu hỏi này, không nên tốn quá nhiều thời gian vào việc tìm phương án thực thi tối ưuhoặc gần tối ưu vì câu hỏi chỉ thực hiện một lần vì thời gian để xử lí một câu hỏi như vậy

sẽ là tổng của thời gian tìm một phương án tối ưu và thời gian thực thi phương án

2.2 Phân tích câu hỏi

Như đã được chỉ rõ trong hình 1, thoạt đầu câu hỏi được phân tích về mặt cú pháp,kiểm tra tên các quan hệ và các thuộc tính trong câu hỏi có trong lược đồ CSDL không,phân tích tính đúng đắn của điều kiện trong câu hỏi Tiếp đến, câu hỏi được biến đổi vềdạng chuẩn tắc, dạng chuẩn hội hay chuẩn tuyển

Từ câu hỏi đã được phân tích, phần lớn các hệ thống tạo sinh ra một cây phép toáncủa đại số quan hệ (chiếu, chọn, kết nối, hợp, hiệu, giao), có thể được mở rộng với các

phép toán gộp và các phép sắp xếp, được gọi là cây đại số hay cây quan hệ (đôi khi còn gọi là cây xử lí (processing tree)).

Như vậy, cây đại số là cây nhị phân biểu diễn một câu hỏi trong đó các nút lá biểudiễn các quan hệ, các nút trung gian biểu diễn các phép toán của đại số quan hệ, nút gốcbiểu diễn kết quả của câu hỏi, còn các cung biểu diễn các dòng dữ liệu giữa các phép toán

Trang 5

Cây đại số quan hệ cũng tương tự như cây nhị phân biểu diễn biểu thức mà các bạn đã học

ở phần cấu trúc cây nhị phân trong môn học Cấu trúc dữ liệu và Giải thuật

Từ cây đại số, có thể tạo sinh một phương án thực thi bằng cách đi dọc theo cây, từ

lá tới gốc Một phép toán có thể được thực hiện theo kiểu hướng tập (set orientedexecution) bao gồm việc tính tập tất cả các bộ của các quan hệ đầu vào của một toán từtrước khi định giá toán tử đó

Như vậy, nếu phép toán O1 không dùng các kết quả của phép toán O2 thì các phéptoán O1 và O2 có thể được thực hiện song song Kiểu thực hiện này có thể thích hợp chonhững thuật toán có khả năng làm việc hiệu quả trên các tập (trên cơ sở của phép sắp xếpchẳng hạn)

Một phép toán cũng có thể được thực hiện theo kiểu từng bộ một hay kiểu đường ống(pipeline execution) Cụ thể là khởi động phép toán sớm nhất có thể, ngay khi đã có một bộcho ít nhất một toán hạng

Đối với phép toán một ngôi, chỉ cần có một bộ là đủ Như vậy, có thể thực hiện haiphép chọn liên tiếp theo kiểu đường ống, có nghĩa là bắt đầu thực hiện phép chọn thứ haingay khi có một bộ (hay một trang gồm một số bộ) được sinh bởi phép chọn thứ nhất Các phép toán hai ngôi, như phép hiệu r – s chẳng hạn, chỉ có thể bắt đầu sau khi đãtính được đầy đủ toán hạng s Như vậy, kiểu đường ống chỉ có khả năng thực hiện mộttoán hạng

2.3 Các chức năng của bộ tối ưu hóa

Bộ tối ưu hóa có mục tiêu là tìm ra một phương án thực thi được tối ưu hóa

Có thể định nghĩa một phương án thực thi là một chương trình (có thể song song),các phép toán sơ cấp phải thực hiện để định giá câu trả lời cho một câu hỏi, thường được

thực hiện làm hai giai đoạn: viết lại (rewriting) và lên phương án (planning).

Viết lại là giai đoạn của tối ưu hóa bao gồm biến đổi câu hỏi về mặt logic để có đượcmột biểu diễn chuẩn tắc Giai đoạn này chứa đựng khía cạnh ngữ nghĩa trong đó có thể tínhtới các ràng buộc toàn vẹn và khía cạnh cú pháp, đưa các điều kiện trong câu hỏi về dạngchuẩn (hội hay chuyển) và gán cho các toán tử đại số một thứ tự cố định

Lên phương án là giai đoạn của tối ưu hóa bao gồm cả việc sắp xếp lại các toán tửđại số (đã được thực hiện ở giai đoạn viết lại), chọn các thuật toán và kiểu thực hiện(hướng tập hay đường ống)

Như vậy giai đoạn viết lại tạo ra một cây logic, còn giai đoạn lên phương án sẽ bổsung các chú giải để có một phương án thực thi

Đương nhiên, ta tìm cách tối ưu hóa thời gian trả lời, có nghĩa làm cực tiểu thời giancần thiết cho việc thực thi câu hỏi Vấn là tạo sinh một cây tối ưu và chọn những thuật toántốt nhất để thực hiện mỗi toán tử và cây đại số xét trong toàn thể Muốn vậy, phải tối ưuhóa đồng thời:

- Số các vào/ra

- Sự song song giữa các toán tử

- Thời gian tính cần thiết (thời gian CPU)

Trang 6

Việc tối ưu hóa được thực hiện phụ thuộc nói riêng vào thứ tự các phép toán trongcây đại số được dùng các thuật toán được giữ lại Do đó, điều quan trọng là thiết lập đượccác quy tắc cho phép từ cây ban đầu phát sinh ra tất cả các phương án có thể, để sau đóchọn được phương án với chi phí nhỏ nhất Thực sự là các cây rất lớn, nên ta thường phảiđịnh nghĩa các quy tắc heuristic để xác định một cây gần tối ưu

3 Tối ưu hóa logic hay phép viết lại

Phép viết lại cho phép thu được một biểu diễn chuẩn tắc của câu hỏi, dưới dạng mộtcây đại số trong đó các phép toán được sắp thứ tự và các điều kiện được viết dưới dạngchuẩn

Phép viết lại có thể bao gồm phép viết lại ngữ nghĩa và phép viết lại cú pháp

3.1 Phân tích và viết lại ngữ nghĩa

Loại phân tích này nhằm xác định tính đúng đắn của câu hỏi, tìm các câu hỏi tươngđương trên cơ sở thao tác trên điều kiện của câu hỏi này nhờ vào các ràng buộc toàn vẹn

Để thực hiện việc phân tích ngữ nghĩa của câu hỏi, có thể dùng đồ thị liên kết cácquan hệ (Relation connection graph), đồ thị các kết nối, đồ thị liên kết các thuộc tính(Attribute connection graph)

Đồ thị liên kết các quan hệ là đồ thị trong đó:

1 Một đỉnh được kết hợp với mỗi xuất hiện của một quan hệ

2 Một phép kết nối được biểu diễn bởi một cung giữ hai nút biểu diễn các quan hệđược kết nối

3 Một phép chọn được biểu diễn bởi một khuyên của nút ứng với quan hệ trên đóphép chọn được áp dụng

4 Phép chiếu cuối cùng được biểu diễn bởi một cung từ nút quan hệ tới một nút đặcbiệt là nút kết quả

Đồ thị các kết nối là đồ thị liên kết các quan hệ trong đó chỉ giữ lại các nút và các

cung biểu diễn các phép kết nối giữa chúng

Đồ thị liên kết các thuộc tính là đồ thị trong đó:

1 Một đỉnh được kết hợp với mỗi thuộc tính hay một hằng được tham chiếu (hay dẫntrỏ)

2 Một phép kết nối được biểu diễn bởi một cung giữa các thuộc tính tham gia

3 Một phép chọn được biểu diễn bởi một cung giữa một thuộc tính và một hằng

Đồ thị liên kết các thuộc tính cho phép phát hiện các điều kiện trong câu hỏi có chứamâu thuẫn, nếu có chứa một chu trình không được thỏa mãn bởi các hằng Nó cũng chophép phát hiện các câu hỏi tương đương với câu hỏi đã cho nhờ tính bắc cầu

Hai hình vẽ dưới đâytheo thứ tự các đồ thị liên kết các quan hệ và đồ thị liên kết cácthuộc tính của câu hỏi được nói ở ví dụ ở trên có biểu diễn bằng SQL như sau

SELECT A

FROM R, S

WHERE R.B=S.C AND S.D=100

Trang 7

Bây giờ ta nói về tính đúng đắn của một câu hỏi Có thể phân biệt hai loại câu hỏikhông đúng đắn sau:

1 Một câu hỏi có thể được phát biểu không chỉnh vì trong câu hỏi có chứa những

phần vô ích: người viết câu hỏi rõ ràng đã quên một phép kết nối trong câu hỏi

2 Một câu hỏi có thể chứa đựng một mâu thuẫn không có bộ nào thỏa được, như với

câu hỏi “Tìm số hiệu nhà cung cấp có cung cấp mặt hàng P2 với số lượng lớn hơn 40 vànhỏ hơn 20”

Sau đây là hai kết quả quan trọng cho phép loại bỏ các câu hỏi không đúng đắn,

trong trường hợp các câu hỏi hội (không có phép hay là) với các toán tử so sánh =, <, >, ,

a Một câu hỏi thường là được phát biểu không chỉnh nếu đồ thị liên kết các quan hệ

của nó không liên thông [4] Thực vậy, mọi đồ thị con không được nối với nút kết quả sẽkhông tham gia vào kết quả đó

b Một câu hỏi là mâu thuẫn nếu đồ thị liên kết các thuộc tính của nó được bổ sung

thêm các cung so sánh giữa các hằng tạo ra một chu trình không thỏa được [4] Thực vậy,khi đó không có bộ nào có thể thỏa được những tân từ của chu trình, kiểu nhưSO_LUONG < 20 và SO_LUONG>40

Nhớ rằng không phải các kỹ sư lập trình ra câu hỏi truy vấn mà là các người sử dụngnghiệp dư mới là người truy vấn dữ liệu và kỹ sư lập trình có nhiệm vụ phân tích câu hỏi

ấy trước khi cho thực thi!

Trong các phần sau chúng ta sẽ thấy vai trò của các đồ thị nói trên trong quá trình càiđặt tối ưu câu truy vấn là rất lớn

3.1.1 Các câu hỏi tương đương do bắc cầu

Trước hết ta cho một định nghĩa chính xác về các câu hỏi tương đương (Equivalentqueries)

Định nghĩa

kqA

R

BS.D

100

Trang 8

Hai câu hỏi là tương đương nếu và chỉ nếu chúng cho cùng kết quả với mọi thể hiện

(ngoại diên) có thể của cơ sở dữ liệu

Từ việc nghiên cứu đồ thị liên kết các thuộc tính có thể phát hiện ra các câu hỏitương đương

Thực vậy, mọi cặp thuộc tính (Ai, Bj) được nối với nhau bằng một đường đi từ Ai tới

Bj mà trên mọi cạnh của đường đi đều có nhãn đẳng thức, thì do tính bắc cầu, phải có Ai =

Bj.

Khi đó chẳng hạn trong đồ thị liên kết ban đầu, nếu thay đồ thị con ta sẽ thu đượcmột câu hỏi tương đương

6.3.1.2 Các câu hỏi tương đương được suy từ các ràng buộc toàn vẹn

Một cách khác để tạo sinh các câu hỏi tương đương là sử dụng các ràng buộc toànvẹn [2,3] Bài toán được đặt ra như sau

Cho câu hỏi thỏa điều kiện Q và một tập các ràng buộc toàn vẹn I1, I2,…In

Nếu Q mâu thuẫn với một trong các ràng buộc Ii, câu hỏi có câu trả lời là rỗng.Ngược lại, chỉ cần định giá điều kiện Q’ (đơn giản hơn Q) sao cho:

I1  I2 … In  Q’Q

(Các kiến thức về biểu diễn tri thức trong Trí tuệ nhân tạo giúp bạn về Q’ đơn giảnhơn Q, I1  I2 … In Q’Q … là gì)

Ta minh họa các phép biến đổi ngữ nghĩa qua một số ví dụ đơn giản

Xét cơ sở dữ liệu về việc cung cấp hàng hóa, gồm 3 quan hệ sau:

S(S#, SNAME, CITY, STATUS)

P(P#, PNAME, COLOR, ADDR, WEIGHT)

SP(S#, P#, QTY)

Với S#, P# lần lượt là mã số của nhà cung cấp hàng hóa và hàng hóa

SNAME, PNAME lần lược là tên nhà cung cấp và tên mặt hàng

CITY là địa chỉ của nhà cung cấp và ADDR là địa chỉ lưu trữ của mặt hàng

Trước hết hãy xét biểu thức sau:

P# (SPS)Phép kết nối ở đây là phép kết nối tự nhiên trên thuộc tính S# là thuộc tính chung củahai quan hệ S và SP Mặt khác vì S# là một khóa ngoại của quan hệ SP và là khóa của quan

hệ S, suy ra mọi bộ của quan hệ SP đều kết nối với một bộ nào đó của quan hệ S và sẽđóng góp một giá trị của S# vào kết quả cuối cùng Nói cách khác, nhờ vào ràng buộc toànvẹn ta thấy trong biểu thức trên, phép kết nối là không cần thiết và biểu thức đã cho tươngđương với biểu thức

P#(SP)

Giả sử rằng CSDL cung cấp hàng hóa của ta thỏa ràng buộc “mọi mặt hàng màu đỏ

phải được lưu trữ ở Huế” Khi đó một câu hỏi khác phức tạp như: “Tìm các nhà cung cấp chỉ cung cấp các mặt hàng màu đỏ và có địa chỉ là thành phố của ít nhất một mặt hàng

Trang 9

được anh ta cung cấp” có thể được biến đổi thành một câu hỏi tương đương đơn giản hơn:

“Tìm các nhà cung cấp ở Huế chỉ cung cấp các mặt hàng màu đỏ”

Gần đây, tối ưu hóa ngữ nghĩa được phát triển trong ngữ cảnh của các hệ CSDLhướng đối tượng và sematic web Các ràng buộc tương đương, kéo theo, tính duy nhất củakhóa, ràng buộc bao hàm đặc biệt hữu ích để biến đổi và làm đơn giản các câu hỏi

3.2 Viết lại cú pháp và cấu trúc lại cây đại số

Đây là các kỹ thuật cơ sở nhằm biến đổi cây đại số và thay đổi thứ tự thưc hiện cácphép toán, dựa trên tính giao hóan và kết hợp của các phép toán đại số quan hệ

3.2.1 Biểu thức tương đương

Trong phần này ta xem quan hệ như là tập các ánh xạ từ tập các thuộc tính U lênmiền giá trị D (xem lại phần các định nghĩa CSDL quan hệ - chương mô hình CSDL quanhệ)

Lúc đó một biểu thức đại số quan hệ có các hạng thức là biến quan hệ R1, R2 , ,Rn,các quan hệ hằng được xác định từ k - bộ của các quan hệ (r1,r2, ,rn) trong đó ri là quan hệtrên lược đồ Ri và thay thế ri vào Ri khi đánh giá biểu thức

Hai biểu thức E1 và E2 được gọi là tương đương viết tắt là E1E2 nếu chúng biểudiễn cùng một ánh xạ, nghĩa là nếu thay thế cùng các quan hệ cho tên các lược đồ tươngứng ở hai biểu thức cho ra cùng một kết quả

Với cách hiểu tương đương trên ta đưa ra một số qui tắc chuyển dịch đại số quan hệthông thường sau đây

3.2.2 Các qui tắc liên quan tới phép kết nối và phép tích Đề-các

(1) Quy tắc giao hoán của phép nối và phép tích Đề - các

Với E1 và E2 là hai biểu thức quan hệ và F là biểu thức điều kiện

1 2

1 2 2

EE)

E

F

2 F 1 3 F

2 F 1

2 1

2 1

) ( E1 E2  E3  E1 E2  E3

) (

) ( E1 E2  E3  E1 E2 E3

Các qui tắc liên quan đến phép chọn và chiếu

(3) Dãy các phép chiếu

Nếu dãy các thuộc tính A1, ,An nằm trong dãy các thuộc tính B1, ,Bm thì:

) ( ))

( (

2 1 2

1

n m

A A

Trang 10

(4) Dãy các phép chọn

) ( ))

( (

2 1 2

( (

1 2 2

( (

1 2 2

Nếu F = F1  F2 , với F1 chỉ liên quan với E1 và F2 liên quan với E2, ta có

) ( ) ( )

2 1

(8) Giao hoán phép chọn và một phép hiệu

)()()(E1 E2 F E1 F E2

(9) Giao hoán giữa phép chọn và kết nối tự nhiên

)(

*)()

*(E1 E2 F E1 F E2

(10) Giao hoán một phép chiếu và một phép tích Đề các

A1, ,An là tập thuộc tính bao gồm B1, ,Bm của E1 và C1, ,Ck của E2 thì

)()

()

1 1

k m

()

1 1

n n

A

Lưu ý rằng phép chọn với phép giao; phép chiếu với phép hiệu lại không có tính giaohoán, hãy cho một phản ví du

Phép chứng minh của các qui tắc trên có thể tham khảo trong [5]

3.2.3 Tối ưu hóa trên cơ sở đại số

Sau đây là 6 chiến lược tối ưu hoá câu hỏi tổng quát [5]

- Thực hiện phép chọn càng sớm càng tốt.

Việc làm này nhằm làm giảm số bộ tham gia vào biểu thức, vì vậy làm giảm đi kích

cỡ của kết quả trung gian, nên chi phí truy cập bộ nhớ, cũng như lưu trữ cũng ít đi

- Tổ hợp một số phép chọn với tích Đề - các thành phép kết nối.

Trang 11

Vì phép kết nối, nhất là kết nối bằng chi phí thực hiện "rẻ" hơn phép tích Đề-các.

- Tổ hợp các chuỗi phép toán một ngôi như phép chọn và chiếu.

Nhằm làm giảm đi số phép toán

- Tìm các biểu thức con chung trong một biểu thức

Nếu kết quả của một biểu thức con chung (biểu thức xuất hiện nhiều lần) là một quan

hệ không lớn và có thể đọc nó từ bộ nhớ thứ cấp với ít thời gian thì nên tính toán biểu thức

đó trước Thường là đưa các kết quả của các biểu thức con chung đó thành một view.Nhờ các biểu thức con chung này ta có thể phân rã câu hỏi thành các câu hỏi con đơngiản hơn, vấn đề này sẽ được bàn trong phần tiếp theo

- Xử lý các tệp trước

Hai vấn đề xử lý quan trọng cần thực hiện trước khi thực hiện các câu hỏi, cũng nhưbất cứ công việc khai thác dữ liệu nào là: sắp xếp trước và thiết lập các tệp chỉ số cho cáctệp dữ liệu Lúc này rõ ràng việc thực hiện các câu hỏi sẽ dễ dàng, nhanh chóng hơn

- Đánh giá trước khi thực hiện tính toán

Khi lựa chọn trình tự thực hiện các phép tính trong một biểu thức, hoặc lựa chọnmột trong hai đối số của phép tính hai ngôi cần tính toán xem chi phí thực hiện các phéptính đó (số phép tính, thời gian, dung tích bộ nhớ ) từ đó có được chi phí tổng quát chocách thực hiện câu hỏi Chẳng hạn nên thực hiện các phép kết nối có kết quả hẹp nhấttrước trong một dãy các phép kết nối

Cụ thể, chúng ta có thể áp dụng các qui tắc đã nêu ở phần trên để đưa ra một trình tự

có tính heuristic nhằm tối ưu hóa các biểu thức quan hệ

Bước 1: Sử dụng quy tắc 4) để tách một phép chọn F1 F n(E) thành chuỗi các phépchọn F1((F n(E)))

Bước 2: Đối với mỗi phép chọn, sử dụng các quy tắc từ (4) đến (9) để di chuyểnphép chọn xuống càng thấp càng tốt

Bước 3: Đối với mỗi phép chiếu, sử dụng các quy tắc (3), (10), (11) và quy tắc (5)suy rộng để di chuyển phép chiếu xuống càng thấp càng tốt

Bước 4: Sử dụng các quy tắc (3), (4) và (5) để tổ hợp các phép chọn và các phépchiếu thành một phép chọn, một phép chiếu , hoặc một phép chọn được một phép chiếutheo sau

Bước 5 Nhóm các phép chiếu tuần tự , giữ các thuộc tính, bỏ đi các phép chiếukhông cần thiết như chiếu Ai với i

Thí dụ

Xét CSDL quản lý tư liệu với các quan hệ sau:

BOOKS(TITLE, AUTHOR, PNAME,LC_NO): quan hệ sách

PUBLISHERS(NAME, PADDR, PCITY, CARD_NO): quan hệ nhà xuất bản

Trang 12

BORROWERS(NAME, ADDR, CITY, CARD_NO): quan hệ độc giả

LOANS(CARD_NO, LC_NO, DATE): quan hệ sổ mượn

Trong đó các thuộc tính là:

PNAME: Tên nhà sản xuất

LC_NO: Số thư viện

PADDR:Địa chỉ của nhà sản xuất

PCITY: Thành phố nơi có nhà sản xuất

CARD_NO: Số thẻ của độc giả

ADDR: Địa chỉ độc giả DATE

CITY: Thành phố nơi độc giả ở

DATE: Ngày mượn sách

Để lưu trữ thông tin về sách, có thể giả thiết thêm rằng, có một khung nhìn XLOANSbao gồm một số thông tin bổ sung về sách được mượn XLOANS là kết nối tự nhiên củaquan hệ BOOKS,BORROWERS , và LOANS và nó có thể được định nghĩa là:

))(

Trong đó:

)_._

.(

)_

_

(BORROWERS CARD NO LOANS CARD NO BOOKS LC NO LOANS LC NO

Còn S là danh sách các thuộc tính trong khung nhìn:

TITLE, AUTHOR, PNAME, LC-NO, NAME, ADDR, CITY, CARD_NO, DATECần đưa ra một danh sách những cuốn sách đã được mượn trước ngày 08/03/02 bằngcách đặt một câu vấn tin:

))(

( DATE 08.03.2002 XLOANS TITLE  

(

) _ _

(

, _ ,

, , , _ , , ,

2002 03 08

NO CARD LOANS NO CARD BORROWERS NO

LC LOANS NO LC BOOKS

DATE NO CARD BORROWERS CITY

ADDR NAME NO LC BOOKS AUTHOR TITLE

DATE TITLE

Trang 13

Chú ý rằng LOANS.CARD_NO là tên của một thuộc tính trong:

)(

Bởi vì nó là thuộc tính của LOANS và kết quả chọn cũng sử dụng các thuộc tính đó

Kế tiếp chúng ta có thể tổ hợp hai phép chiếu thành một là TITLE nhờ qui tắc (3).Cây kết quả như sau:

Trang 14

Sau đó nhờ qui tắc (5) mở rộng chúng ta có thể thay TITLE

NO LC LOANS NO

TITLE,BOOKS.LCNO,LOANS.LC_NO

Chúng ta áp dụng qui tắc (10) để thay phép chiếu cuối cùng bằng:

TITLE,BOOKS.LCNO,LOANS.LC_NO

Để áp dụng cho BOOKS và LOANS.LC_NO thì áp dụng cho toán hạng bên trái của tích

Đề - các bên trên cây kết quả trên

Phép chiếu sau tương tác với phép chọn bên dưới nó nhờ qui tắc (5) mở rộng tạo ra chuỗi:

LOANS.LCNO

BORROWERS.CARDNOLOANS.CARDNO

LOAN.LCNO,BORROWERS.CARDNO,LOANS.CARDNO

Phép chiếu cuối cùng được chuyển cho tích Đề - các nhờ qui tắc (10) và chuyển mộtphần cho phép chọn DATE08.03.2002 nhờ qui tắc (5) mở rộng.Sau đó chúng ta phát hiệnrằng trong biểu thức:LOANS.LCNO,LOANS.CARDNO,DATE

Phép chiếu này không cần thiết bởi vì tất cả các thuộc tính của LOANS đều được sửdụng Do đó chúng ta loại bỏ phép chiếu này.Cây kết quả cuối cùng được trình bày nhưsau:

TITLE

 BOOKS.LCNOLOANS.LCNO

Trang 15

3.3 Sắp thự tự các phép toán trên cơ sở phân tách câu hỏi

Phép phân tách câu hỏi dựa trên phân tách và thay thế bộ cho phép sắp xếp các phéptoán lại theo thứ tự: chọn, nửa nối, kết nối

Phép tách nhằm lấy đi một thành phần của một câu hỏi có đúng 1 biến chung vớiphần còn lại của câu hỏi

Phép thay thế bộ thay thế một trong số các biến của câu hỏi, mỗi lần một bộ

Phép tách được ưu tiên thực hiện trước phép thế bộ

Xét ví dụ sau, để quản lí hàng hóa trong việc vận chuyển bằng tàu hỏa, ta có cơ sở dữliệu gồm hai quan hệ:

TAU (TTU_TAU, TTU_TOA)

TOA(TTU_TOA, KIEUTOA,TLU_TOA, NLU_TOA, TITR, GA)

Trong đó

TTU_TAU: thứ tự tàu

TTU_TOA: thứ tự toa

TLU_TOA: trọng lượng toa

NLU_TOA: năng lực toa

TITR : tình trạng

GA: Ga tàu mà toa đó đỗ

Giả sử có yêu cầu: “Hãy đưa ra danh sách các kiểu toa của đoàn tàu có thứ tự tàu

4002”, với câu lệnh truy vấn trong SQL như sau:

Select KIEUTOA

From TAU,TOA

Where (TOA.TTU_TOA =TAU.TTU_TOA) and (TAU.TTU_TAU=4002)

Có thể tách câu vấn tin trên thành hai câu vấn tin con và thực hiện chúng theo trình

tự như trình bày dưới đây:

Selec * INTO T1

Trang 16

Where TOA.TTU_TOA= T1.TTU_TOA

Dưới đây sẽ trình bày một cách tổng quát vấn đề và sẽ nghiên cứu vì sao có thể tạo rađược các câu hỏi con như trên

Trong SQL các câu hỏi thường gặp là câu hỏi có dạng tổng quát:

Select A1, ,An

From R1, ,Rn

Where F1 and F2

Với F1, F2 là các mệnh đề chọn hoặc mệnh đề kết nối

Một câu hỏi là tách được với một biến (quan hệ) tách Xm , nếu có thể biểu diễn dướidạng:

Select A1, A2, An

From R1, R2, ,Rn

Where F1(X1, ,Xm) and F2(Xm,Xm+1, ,Xn)

Như vậy để một câu hỏi có thể tách được, danh sách các biến trong biểu thức điều

kiện trong mệnh đề WHERE có thể biểu diễn dưới dạng and của hai biểu thức điều kiện

đều có chứa biến Xm, những biến còn lại chỉ có mặt nhiều nhất là một lần ở trong hai biểuthức thành phần

Sử dụng các khái niệm đồ thị liên kết quan hệ và đồ thị liên kết thuộc tính, để biểudiễn câu hỏi, ta có thể nhận ra các thành phần có thể tách được của các câu hỏi

Ví dụ: Xét CSDL quản lý đường sắt, gồm các quan hệ sau:

Quan hệ đường:DUONG (TTU_DG, GA)

Quan hệ tàu: TAU (TTU_TAU, TTU_TOA)

Quan hệ hiện trạng: HTR (TTU_TAU, TTU_DG, TTU_NG)

Ở đây:

TTU_TOA: Thứ tự TOA; TTU_DG: Thứ tự đường; GA: Tên ga; TTU_TAU: Thứ

tự tàu; TTU_NG: Ngày khởi hành

Với câu hỏi: Hãy cho danh sách các toa khởi hành từ ga HUẾ vào ngày 05.01.02

Q 0

Selec TTU_TOA

Ngày đăng: 01/07/2014, 12:28

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[2]. King J.I. “QUIST: A system for semantic query optimization in relation al databases”, Pro 7 th Int Confr. On Very large Databases, Cannes, France, IEEE, 1981 Sách, tạp chí
Tiêu đề: QUIST: A system for semantic query optimization in relation aldatabases
[3]. Smith J.M, Chang P.Y. “Optimizing the performance of a relational algebra database interface”, Comm ACM, vol 18, 1975 Sách, tạp chí
Tiêu đề: Optimizing the performance of a relational algebradatabase interface
[4]. Wong E, Youssefi K, “ Decomposition – A strategy for query processing”, ACM IODS, vol 1, 1976 Sách, tạp chí
Tiêu đề: Decomposition – A strategy for query processing
[5]. Ullman. J.D. “Nguyên lý các hệ cơ sở dữ liệu và tri thức”, NXB KHKT, 1997 Sách, tạp chí
Tiêu đề: Nguyên lý các hệ cơ sở dữ liệu và tri thức
Nhà XB: NXB KHKT
[1]. Hồ Thuần, Hồ Cẩm Hà, Các hệ cơ sở dữ liệu , NXB Giáo dục 2004 Khác

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

w