6.1 query optimization overview

28
[email protected] Hệ quản trị cơ sở dữ liệu Hệ quản trị cơ sở dữ liệu Dư Phương Hạnh Bộ môn Hệ thống thông tin Khoa CNTT, trường Đại học Công nghệ Đại học Quốc gia Hanoi [email protected] Query Optimization Query Optimization

Upload: tran-thanh

Post on 18-Jun-2015

244 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 6.1 query optimization overview

[email protected]

Hệ quản trị cơ sở dữ liệuHệ quản trị cơ sở dữ liệu

Dư Phương HạnhBộ môn Hệ thống thông tin

Khoa CNTT, trường Đại học Công

nghệ

Đại học Quốc gia Hanoi

[email protected]

Query OptimizationQuery Optimization

Page 2: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT2

OutlineOutline

Tổng quan

Không gian physical plans

Các chiến lược tối ưu hoá– Dựa trên kinh nghiệm– Dựa trên chi phí

Tổng kếtTài liệu tham khảo: Chap 12+13+14 of Ramakrishnan

Page 3: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT3

Giới thiệuGiới thiệu

Phần lớn các truy vấn được viết bởi ngôn ngữ bậc cao phi thủ tục như SQL, QBE, OQL.

Các truy vấn này phải được chuyển sang các biểu thức đại số quan hệ tương đương (query tree).

Các biểu thức này có chứa các toán tử đại số quan hệ, mỗi toán tử có một chi phí (cost) thực thi tương ứng.

Với một mệnh đề truy vấn, có thể chuyển đổi tương ứng với nhiều cây truy vấn, việc chọn lựa plan thực thi nào là dựa trên đánh giá chi phí.– Các cây truy vấn tương đương được sinh ra nhờ các phép biến đổi

tương đương.

Page 4: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT4

parse

Query rewriting

Physical plan generation

execute

result

SQL query

query tree

logical query planstatistics

physical query plan

Quy trình xử lý truy vấnQuy trình xử lý truy vấn

Page 5: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT5

Vấn đề là…Vấn đề là…

Chọn best plan từ không gianphysical plans

Khó vì: không gian này có thể rất lớn do Có nhiều phép biến đổi tương đương Các phép toán vật lý khác nhau cho

cùng một toán tử logic– nested loop join, hash join, sort-merge join– index-scan, table-scan

Các mẫu cây khác nhau Các chiến thuật xử lý gối đầu

(pipelining, …)

Page 6: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT6

Các chiến lượcCác chiến lược

1: Chọn một plan bất kỳ– Bad plans can be really bad!

2: Dựa vào mẹo (heuristics)– Ví dụ: Sử dụng index nhiều nhất có thể với HQTCSDL

MySQL

3: Dựa trên chi phí– Liệt kê, ước lượng chi phí thi hành, chọn cái tốt nhất– Chú ý các vòng lặp trong các plans

4: Hybrid

Page 7: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT7

Thực tếThực tế

Hybrid Sử dụng mẹo (heuristics, còn gọi là các luật viết

lại - rewrite rules)– Loại đi những plans “xấu nhất”– Tránh bỏ xót những plans tốt

Dựa trên ước lượng chi phí– Ước lượng chi phí thi hành đối với mỗi plan, từ đó chọn

plan có chi phí tốt nhất

Page 8: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT8

parse

Query rewriting

Physical plan generation

execute

result

SQL query

parse tree

logical query planstatistics

physical query plan

Initial logical plan

“Best” logical plan

Logical plan

Rewrite rules

Page 9: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT9

Tại sao cần viết lại truy vấn?Tại sao cần viết lại truy vấn?

Giảm bớt số lượng physical plans nhờ:– Loại bỏ các điều kiện/toán tử dư thừa– Sử dụng cá luật giúp cải thiện hiệu năng truy vấn

Tiền xử lý– Chuyển các truy vấn sang dạng dễ dàng xử lý nhất

Giảm thời gian đáng kể quá trình thi hành truy vấn (kết quả không bị ảnh hưởng)

Page 10: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT10

Các luật viết lại truy vấnCác luật viết lại truy vấn

Luật chuyển đổi logical plan

Các biến đổi tương đương trong đại số quan hệ

Đưa các vị từ xuống dưới

Thực thi các phép chiếu sớm nhất có thể

Tránh tối đa nhân chéo cross-join

Sử dụng cây trái nhất

Chuyển truy vấn lồng Joins

Sử dụng các ràng buộc, chẳng hạn unique

Page 11: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT11

Ví dụVí dụ

Select B,D From R,S Where R.A = “c” R.C=S.C

R.C S.C=

<Query>

<SFW>

SELECT <SelList> FROM <FromList> WHERE <Cond>

<Attribute> <SelList> <RelName> <FromList> <Cond> AND <Cond>

B <Attribute> R <RelName>

S<Attr> <Op> <Const>

<Attr> <Op> <Attr>

R.A = “c”D

Page 12: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT12

ParsingParsing

Kiểm tra ngữ nghĩa (semantic)– Lịệu các thuộc tính của phép chiếu có tồn tại trong các

quan hệ xuất hiện ở mệnh đề FROM?– Có thuộc tính trùng lặp hay không?– Kiểu dữ liệu có chuẩn không, ví dụ: R.A > 17.5

Page 13: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT13

Initial Logical PlanInitial Logical Plan

Relational Algebra: B,D [ R.A=“c” R.C = S.C (RXS)]

Select B,DFrom R,SWhere R.A = “c” R.C=S.C

B,D

R.A = “c” Λ R.C = S.C

X

R S

Page 14: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT14

Apply Rewrite Rule Apply Rewrite Rule (1)(1)

B,D [ R.C=S.C [R.A=“c”(R X S)]]

B,D

R.A = “c” Λ R.C = S.C

X

R S

B,D

R.A = “c”

X

R S

R.C = S.C

Page 15: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT15

Apply Rewrite Rule Apply Rewrite Rule (2)(2)

B,D [ R.C=S.C [R.A=“c”(R)] X S]

B,D

R.A = “c”

X

R

S

R.C = S.C

B,D

R.A = “c”

X

R S

R.C = S.C

Page 16: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT16

Apply Rewrite Rule Apply Rewrite Rule (3)(3)

B,D [[R.A=“c”(R)] S]

B,D

R.A = “c”

R

S

B,D

R.A = “c”

X

R

S

R.C = S.CNatural join

Page 17: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT17

Các phép biến đổi tương Các phép biến đổi tương đươngđương

1. Phân phối σσC1 AND C2 AND …AND Cn(R)≡σC1(σC2(…(σCn(R))…)

2. Giao hoán của σ σ C1 (σ C2 (R)) ≡ σ C2 (σ C1 (R))

3. Phân phối của Π list1(list2 …(listn(R))…) ≡ list1(R)

4. Giao hoán σ với Π A1, A2,…,An (σ C (R))≡ σ C (A1, A2,…,An (R))

C involves only A1,…,An

Page 18: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT18

5. Giao hoán của ( or ⋈ ) R ⋈ C S ≡ S ⋈ C R

meaning

6. Giao hoán σ với ( or ⋈ )

- σC (R S) ≡(σ⋈ C (R) ) S⋈

attributes in C involve only attributes of R

- σC (R S) ≡(σ⋈ C1 (R) ) (σ⋈ C2 (S) )

C1 (C2) involves only attribute of R(S)

Các phép biến đổi…Các phép biến đổi…

Page 19: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT19

7. Giao hoán với ( or ⋈ ) L( R ⋈ C S)≡(A1,…,An (R)) ⋈ C (B1,…,Bm (S))

L = { A1,…, An, B1,…, Bm } join condition C only involves L

General FormGeneral Form

LL ( R ⋈ ( R ⋈ CC S) ≡ S) ≡ LL (( ((A1,A1,……,An, An+1,,An, An+1,……,An+k ,An+k (R)) ⋈(R)) ⋈

(( B1,B1,……,Bm, Bm+1,,Bm, Bm+1,……,Bm+p,Bm+p(S)) (S))

Các phép biến đổi…Các phép biến đổi…

Page 20: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT20

8. Giao hoán của các phép toán tập hợp

U and ∩

9. Kết hợp các phép toán , ⋈ U, ∩

(R S) T ≡ R ( S T )

10. Kết hợp σ với các phép toán tập hợp

σC ( R S) ≡ (σC ( R )) (σC ( S ))

: U, ∩, -

Các phép biến đổi…Các phép biến đổi…

Page 21: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT21

Thực tếThực tế

1. Break up any SELECT operations with conjunctive operations into a cascade of SELECT operations. • σC1 AND C2 AND … AND Cn(R)≡σC1 (σC2 (…(σCn(R))…))

2. Push SELECT operations as far down the query tree as possible– σ C1 (σ C2 (R)) ≡ σ C2 (σ C1 (R)) :

A1, A2,…,An (σ C (R))≡ σ C (A1, A2,…,An (R))

– σC (R S) ≡(σ⋈ C (R) ) S⋈

– σC (R S) ≡(σ⋈ C1 (R) ) (σ⋈ C2 (S) )

3. Rearrange operations so that: – the most restrictive SELECT operations are executed first – Avoid CARTESIAN PRODUCT operation,

Page 22: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT22

Thực tế…Thực tế…

4. Try to combine a CARTESIAN PRODUCT operation with a SELECT operation into a join condition.

– σC (R X S) ≡ (R ⋈C S)

5. Break up PROJECT operations and move lists of projection attributes as down the tree as possible by creating new project operations List1 (List2 (…(Listn (R))…))= List1 (R)

A1,A2…,An (σC (R)) ≡ σC (A1,A2…,An (R))

L (R ⋈ C S) ≡ (A1,…,An (R)) (⋈ B1,…,Bm (S))

L (R U S) ≡ (L (R)) U (L (S))

6. Identify sub trees that represent groups of operations that can be executed by a single algorithm.

Page 23: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT23

Lựa chọn plan thi hànhLựa chọn plan thi hành

Bộ xử lý truy vấn có nhiệm vụ đưa ra quyết định– Biểu thức đại số tương đương nào sẽ mang lại giải thuật

hiệu quả nhất?– Với mỗi toán tử đại số, sử dụng giải thuật nào để thực

thi?• Thường có nhiều cách để thi hành một phép toán logic, cần dựa

trên dữ liệu thực lưu trên thiết bị lưu trữ của quan hệ để quyết định lựa chọn cách/giải thuật hiệu quả.

– Việc chuyển dữ liệu xử lý giữa các toán tử được thực hiện thế nào? (ví dụ, thông qua main memory buffers, disk buffers)

Page 24: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT24

Tối ưu hoá truy vấn dựa trên chi Tối ưu hoá truy vấn dựa trên chi phíphí Còn gọi là tối ưu hoá hệ thống (systematic query

optimization)

Dựa trên phương pháp ước lượng “chi phi” thi hành của kế hoạch thi hành truy vấn.

Thông thường kết hợp cùng với tối ưu hoá sử dụng mẹo (heuristic query optimization), để chọn candidate plans tốt nhất.

Chú ý tốc độ ước lượng: đảm bảo đủ nhanh để không ảnh hưởng nhiều đến việc thực thi truy vấn từ người dùng.

Page 25: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT25

Chiến thuật Chiến thuật

Sử dụng mẹo để thu hẹp không gian plans– Đưa các vị từ xuống thấp nhất trong cây (để được thực

thi sớm nhất)– Hạn chế các plan đòi hỏi cross join– Sử dụng các cây trái nhất

Đánh giá chi phí cho các plan còn lại– Chú trọng việc thi hành các vòng lặp, đặc biệt đối với các

phép nối, trong một truy vấn.

Chọn plan có chi phí thấp nhất

Page 26: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT26

Lựa chọn Physical PlanLựa chọn Physical PlanLogical Query Plan

P1 P2 …. Pn

C1 C2 …. Cn

Pick minimum cost one

Physical plans

Costs

Page 27: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT27

Các loại chi phíCác loại chi phí

Chi phí truy cập thiết bị lưu trữ thứ cấp

– searching, reading, writing data blocks.

Chi phí lưu trữ

– Storing intermediate files

Chi phí cho các phép toán cơ bản

– Searching for, sorting, merging, records, computing field values,…

Chi phí truyền thông (đối với distributed database)

– Chi phí truyền két quả truy vấn từ database site tới query site

Chi phí sử dụng bộ nhớ

– Lượng memory buffer cần thiết trong quá trình thực thi truy vấn

Page 28: 6.1 query optimization overview

Hệ quản trị CSDL @ BM HTTT28

Các tham số chi phíCác tham số chi phí

Số lượng bộ (trong mỗi quan hệ) Số lượng block (trong mỗi quan hệ) Số mức mỗi chỉ mục Số lượng block cho mức index đầu tiên Số lượng giá trị không trùng lặp (distinct values)

trên mỗi thuộc tính

Được lưu trong catalog; chỉ cần ước lượng là đủ.