Cơ sở dữ liệu - Chương 5: Tối ưu hóa câu truy vấn

1. Tổng quan vềxửlý truy vấn

2. Tối ưu hóa truy vấn dùng Heuristics

 3. Tối ưu hóa truy vấn dùng phương pháp

ước lượng chi phí

pdf13 trang | Chuyên mục: SQL Server | Chia sẻ: dkS00TYs | Lượt xem: 4922 | Lượt tải: 5download
Tóm tắt nội dung Cơ sở dữ liệu - Chương 5: Tối ưu hóa câu truy vấn, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
1Chương 5
TỐI ƯU HÓA CÂU TRUY VẤN
1
Mục đích
‰ Tối ưu hóa vấn tin là tiến trình lựa chọn kế 
họach thực thi câu vấn tin một cách hiệu quả 
nhất.
– Tốn ít tài nguyên nhất.
– Hồi đáp nhanh nhất.
2
2Nội dung
1. Tổng quan về xử lý truy vấn
2. Tối ưu hóa truy vấn dùng Heuristics
ố ấ3. T i ưu hóa truy v n dùng phương pháp 
ước lượng chi phí
3
Các bước xử lý vấn tin
Scanning, 
parsing and 
validating
Intermediate form of query
Query in high-level language (SQL)
1
Query 
optimizer
Query code 
generator
(Relational algebra expression)
execution plan
2
3
4
Runtime 
database 
processor
Generated code
Result
4
3Các bước xử lý vấn tin
‰ Bước 1
– Scan
ŠXác định các từ khóa của ngôn ngữ SQL tên thuộc , 
tính, tên quan hệ.
– Parse
ŠKiểm tra cú pháp câu truy vấn.
– Validate
ŠKiểm tra tên thuộc tính, tên quan hệ có trong lược đồ 
đã kh i bá h khô
5
 a o ay ng.
ŠKhông nhập nhằng khi dùng các thuộc tính.
ŠKiểu dữ liệu dùng để so sánh đều hợp lệ.
– Thể hiện lại câu truy vấn: đại số quan hệ, query 
tree, query graph.
Parse tree
Tìm các bộ phim mà diễn viên sinh vào năm 1960
SELECT title
FROM StarsIn
WHERE starName IN (
SELECT name
FROM MovieStar
WHERE birthdate LIKE ‘%1960’);
SELECT FROM WHRRR 
 IN 
title StarsIn ( )
starName 
6
SELECT FROM WHERE 
 LIKE 
name MovieStar birthDate ‘%1960’
4Chuyển Q thành ĐSQH
‰ Câu truy vấn được phân rã thành các query 
block (QB).
QB là đ ị bả để ó thể h ể á– ơn v cơ n c c uy n sang c c 
biểu thức ĐSQH và tối ưu hóa.
– Một QB chứa một biểu thức đơn SELEC-FROM-
WHERE-GROUP BY – HAVING.
– Các câu truy vấn lồng trong 1 câu truy vấn là 
á QB độ lậ
7
c c c p.
– Các toán tử gom nhóm (max, min, sum, count) 
được thể hiện dùng ĐSQH mở rộng.
SRLRCT HONV, TENNV
FROM NHANVIEN
WHERE LUONG > (SRLECT MAX(LUONG)
FROM NHANVIRN 
outer block
c
WHRRR PHG = 5
)
inner block
Bt ĐSQH 1Bt ĐSQH 2
8
Bộ tối ưu hóa truy vấn (Query Optimizer - QO) sẽ chọn lựa kế hoạch thực thi 
cho từng block.
5‰ Bước 2
– DBMS đề ra kế hoạch thực hiện câu truy vấn 
phù hợp nhất trong các chiến lược thực thi .
– Tiến trình này gọi là tối ưu hóa câu truy vấn.
‰ Bước 3
– Bộ phát sinh mã sẽ cho ra mã để thực thi câu 
truy vấn theo chiến lược vừa chọn.
9
‰ Bước 4
– Thi hành mã đã phát sinh.
Sắp xếp ngoài (external sorting)
‰ Sắp xếp là thuật toán chính dùng khi xử lý truy vấn.Ví dụ ORDER BY.
‰ Sắp xếp cũng là bước quan trọng dùng cho phép join, union, và bước 
loại bỏ dòng trùng nhau khi thực hiện phép chiếu.
‰ Tránh thực hiện sắp xếp nếu dữ liệu đã có chỉ mục cho phép truy cập 
theo thứ tự.
‰ Sắp xếp ngoài đề cập đến các thuật toán sắp xếp trên tập tin cơ sở dữ 
liệu lớn không thể chứa đủ trong bộ nhớ chính.
‰ Sort-Merge:
– Thuật toán sắp xếp gồm 2 bước: sorting và merging.
– Sắp xếp các subfile (runs) của tập tin chính, sau đó trộn các sorted runs, rồi 
tạo subfile lớn hơn sắp xếp rồi lại trộn chúng
10
 , .
– Kích thước của 1 run và số lượng run khởi đầu nR tùy vào số lượng file 
blocks b và không gian buffer trống nB.
Š Nếu nB = 5 và b = 1024 blocks thì nR = ⎡b/nB⎤ , tức là ban đầu có 205 run. Sau 
khi sắp xếp, 205 sorted run được lưu trong file tạm trên đĩa.
6Phép chọn
‰ Có nhiều chọn lựa khi thực hiện phép chọn đơn.
– S1: Tìm tuyến tính: đọc từng mẫu tin và kiểm tra giá trị thuộc tính có thỏa 
điều kiện chọn hay không.
– S2: tìm nhị phân: nếu điều kiện chọn là phép so sánh bằng trên thuộc tính 
khóa dùng để sắp xếp file, thì tìm nhị phân sẽ được áp dụng.
– S3: Dùng primary index hoặc hash key để đọc 1 mẫu tin nếu phép chọn là 
so sánh bằng trên thuộc tính khóa đã khai báo là primary index hoặc là 
khóa băm.
– S4: Dùng primary index để tìm nhiều mẫu tin: nếu điều kiện so sánh là >, 
>=, <, <=, trên trường khóa được khai báo là primary index thì dùng index 
để tìm kiếm trên điều kiện =, sau đó tìm thêm các mẫu tin thỏa điều kiện 
không bằng.
11
– S5: Dùng clustering index tìm nhiều mẫu tin: nếu điều kiện chọn là so sánh 
bằng trên trường không là khóa và có khai báo clustering index.
– S6: Dùng secondary index trên điều kiện so sánh bằng để tìm 1 mẫu tin 
nếu index field là khóa hoặc tìm nhiều mẫu tin nếu indexing field không là 
khóa. Cách này cũng có thể dùng để tìm kiếm với điều kiện chọn không 
phải là so sánh bằng.
Phép chọn
‰ Điều kiện chọn phức nối nhau bởi AND
– Nếu thuộc tính trong điều kiện chọn phức có liên 
quan đến các kiểu chọn đơn như đã đề cập thì 
vận dụng chúng, sau đó kiểm tra kết quả trả về 
có thỏa điều kiện chọn còn lại trong mệnh đề 
chọn phức hay không.
– Nếu điều kiện chọn phức có liên quan đến 
composite index thì vận dụng chúng trực tiếp
12
 .
– Dùng pp giao các record pointer của từng loại 
index liên quan đến điều kiện chọn phức nếu 
index đang dùng gồm có record pointer.
7Phép kết R ڇA=B S
‰ J1: Nested-loop join: đối với từng mẫu tin t trong R, tìm từng mẫu tin s 
trong S và kiểm tra xem hai mẫu tin có thỏa t[A] = s[B]?.
‰ J2: Single-loop join: đối với từng mẫu tin t trong R, dùng cấu trúc chỉ 
mục truy cập trực tiếp mẫu tin thỏa điều kiện kết ở quan hệ S.
‰ J3: Sort-merge join: nếu mẫu tin trong R và S đều được sắp xếp vật lý 
trên A và B thì phép kết diễn ra rất hiệu quả (nếu không thì sắp xếp cả 
hai trước), cả hai tập tin được duyệt theo thuộc tính kết, so khớp các 
mẫu tin cùng giá trị A và B.
‰ J4: Hash join (kết băm):dùng 1 hàm băm để ánh xạ các mẫu tin của R 
vào các bucket Ri dựa vào giá trị của A. Các mẫu tin của S cũng được 
ánh xạ vào các bucket Si. Các Ri và Si được duyệt qua để tổ hợp các 
bộ thuộc Hi và Si thỏa điều kiện kết.
13
Phép chiếu Πdstt (R)
‰ Nếu dstt có chứa khóa của R thì số bộ kết 
quả bằng số bộ của R ban đầu.
ế ủ ỏ‰ N u dstt không chứa khóa c a R thì loại b 
những bộ trùng.
– Sắp xếp kết quả rồi loại bỏ những bộ trùng.
14
8Phép toán tập hợp
‰ Phép toán hội, giao, trừ đòi hỏi 2 quan hệ 
phải khả hợp, thường cài đặt bằng cách sắp 
xếp chúng theo cùng 1 thuộc tính sau đó , 
bằng 1 phép duyệt đơn giản lên 2 quan hệ 
cũng đủ tạo ra quan hệ kết quả.
‰ Phép tích đề - các tốn rất nhiều chi phí và 
nên tránh nếu có thể.
15
Các hàm kết hợp
‰ Nếu tính trên toàn bảng thì được thực hiện 
bằng việc duyệt bảng hoặc dùng index nếu 
có.
‰ Nếu tính toán trên từng nhóm (có group by) 
thì việc phân nhóm có thể thực hiện bằng 
cách:
– Sắp xếp.
16
– Băm.
– Nếu có clustering index thì chỉ việc tính toán trên 
từng nhóm có sẵn.
9Query tree
– Là cấu trúc dạng cây tương ứng với một biểu 
thức đại số quan hệ. 
Πtitle
σstarName=name
×
17
StarsIn Πname 
σbirthdate LIKE ‘%1960’
MovieStar
Kế hoạch thực thi truy vấn
‰ Kế hoạch thực thi mức logic (Logical plan) 
thể hiện mức cao và dùng đại số, qua cấu 
trúc ngôn ngữ truy vấn .
‰ Kế hoạch thực thi mức vật lý (Physical plan) 
thể hiện cấp thấp và liên quan đến việc thực 
hiện, qua các phương pháp truy xuất.
‰ Có nhiều kế hoạch thực thi truy vấn mức vật
18
lý ứng với một kế hoạch thực thi mức logic 
cho trước.
10
LP và PP
Πtitle
Hash join
SEQ scan index scan
σstarName=name
StarsIn Πname 
×
19
StarsIn MovieStarσbirthdate LIKE ‘%1960’
MovieStar
Các luật biến đổi tương đương
1. σc1AND c2 AND…AND cn (R) ≡ σc1(σc2(… σcn (R) …))
2. σc1(σc2 (R)) ≡ σc2(σc1(R)) giao hoán của σ
3. ΠL1(ΠL2(…(ΠLn(R))…)) ≡ ΠL1(R) 
4. ΠL1,L2, …, Ln(σc(R)) ≡ σc(ΠL1,L2, …, Ln (R))
5. R1ڇc R2 ≡ R2ڇc R1 giao hoán của ڇ và x 
R1xR2 ≡ R2xR1
6. σc(R1ڇ R2) ≡ (σc(R1)) ڇ R2
σc(R1ڇ R2) ≡ (σc1(R1)) ڇ (σc2(R2)) nếu c có thể viết là c1 AND c2, c1 gồm thuộc tính của R1, c2 gồm 
thuộc tính của R2
7. ΠL(R1ڇc R2) ≡ (ΠA1, A2 …,An(R1)) ڇc (Π B1, B2 …,Bn (R2)) đổi chỗ giữa Π và ڇ (hoặc x) L = {A1, A2, … An, 
B1, B2, …, Bn} Ai ∈ R1, Bi ∈ R2
8. ∪ và ∩ có tính giao hoán, nhưng phép – thì không.
9. Tính kết hợp của θ: ڇ, x, ∪ và ∩: (R1 θR2 )θR3 ≡ R1 θ (R2 θ R3)
10 (R θ R ) ≡( (R )) θ ( (R )) đổi chỗ và θ gồm ∪ ∩ và
20
. σc 1 2 σc 1 σc 2 σ , -
11. ΠL (R1 ∪ R2) ≡ ΠL (R1) ∪ ΠL (R2)
12. σ c(R1xR2) ≡ R1 ڇc R2 chuyển σ, x sang ڇ
13. Luật DeMorgan NOT (C1 AND C2) ≡ (NOT C1) OR (NOT C2)
NOT (C1 OR C2) ≡ NOT (C1) AND NOT(C2)
11
Các luật biến đổi tương đương
14. (σP (R1 - R2) ≡ σP (R1) – R2
15. ΠA1,…, An(σC(R)) ⇔ ΠA1,…, An(σC(ΠA1,…, An,Ap (R)))
σc1(R1ڇc2 R2) ≡ R1ڇc1∧ c2 R2
21
Giải thuật Heuristics
1. Dùng quy tắc 1, tách các phép chọn đi cùng nhau để có thể 
tự do di chuyển phép chọn xuống các nhánh của cây.
2. Dùng quy tắc 2, 4, 6, 10 liên quan đến tính giao hóan giữa 
phép chọn và các phép toán khác để di chuyển phép chọn 
xuống nhánh của cây.
3. Dùng quy tắc 9 liên quan đến tính kết hợp của các phép 2 
ngôi, để sắp xếp lại các nút lá của cây để các phép chọn 
được ưu tiên thực hiện trước.
4. Dùng 12, kết hợp tích đề-các và phép chọn thành phép kết.
5 Dùng 3 4 7 11 để tách và đẩy các phép chiếu xuống các
22
. , , , 
nhánh.
6. Nhận biết từng nhánh biểu diễn cho một nhóm các thao tác 
có thể thi hành bằng chiến lược thực hiện đơn.
12
Tối ưu hóa câu truy vấn dùng việc chọn lựa và 
ước lượng chi phí
‰ Ước lượng chi phí thi hành một câu truy vấn 
cho nhiều chiến lược thực thi khác nhau và 
chọn ra chiến lược thi hành có chi phí thấp 
nhất.
‰ Chi phí cho một chiến lược bao gồm:
1. Chi phí truy xuất đến nơi lưu trữ thứ cấp (vd: 
đĩa cứng)
2 Chi phí lưu trữ dữ liệu kết quả trung gian
23
. .
3. Chi phí tính toán: để thực hiện các thao tác 
trong bộ nhớ chính.
4. Chi phí truyền thông.
Tối ưu hóa câu truy vấn dùng việc chọn lựa và 
ước lượng chi phí
‰ Để ước lượng chi phí cho các chiến lược 
truy vấn khác nhau, cần lưu lại thông tin cần 
thiết trong catalog để bộ tối ưu hóa sử dụng .
– Số mẫu tin r.
– Kích thước trung bình của từng mẫu tin R.
– Số khối b.
– Hệ số khối bfr.
24
– Chỉ mục nếu có loại gì (primary, secondary, 
clustering): số mức x (nếu là multilevel index), 
số block ở mức đầu tiên của index bI1
– …
13
Hết chương 5
25

File đính kèm:

  • pdfChuong_5_Toi_uu_hoa_van_tin.pdf
Tài liệu liên quan