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 t
Trang 1Hệ 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
Query Optimization
Trang 2 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ết
Tài liệu tham khảo: Chap 12+13+14 of Ramakrishnan
Trang 3Giớ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
Trang 4parseQuery rewriting
Physical plan generation
execute
result
SQL queryquery tree
logical query planstatistics
physical query plan
Quy trình xử lý truy vấn
Trang 5Vấn đề là…
Chọn best plan từ không gian
physical 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
Trang 6Cá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
Trang 7 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
Trang 8physical query plan
Initial logical plan
“Best” logical planLogical plan
Rewrite rules
Trang 9Tạ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)
Trang 10Cá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
Trang 11Ví dụ
Select B,D From R,S Where R.A = “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
Trang 12 Kiểm tra ngữ nghĩa (semantic)
– Liệ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
Trang 13Initial Logical Plan
Relational Algebra : B,D [ R.A=“c” R.C = S.C (RXS)]
Trang 14Apply Rewrite Rule (1)
Trang 15Apply Rewrite Rule (2)
Trang 16Apply Rewrite Rule (3)
Trang 17Các phép biến đổi tươ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
Trang 185 Giao hoán của ( or ⋈ ( or )
Trang 197 Giao hoán với ( or ⋈ ( or )
Trang 208 Giao hoán của các phép toán tập hợp
Trang 21Lự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)
Trang 22Tối ưu hoá truy vấn dựa trên chi 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
Trang 23Chiến thuật
– Đư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
– 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
Trang 24Lựa chọn Physical Plan
Logical Query Plan
P1 P2 … Pn
C1 C2 … Cn
Pick minimum cost one
Physical plans
Costs
Trang 25Các loại chi phí
– searching, reading, writing data blocks.
– Storing intermediate files
– Searching for, sorting, merging, records, computing field values,…
– Chi phí truyền két quả truy vấn từ database site tới query site
Trang 26Cá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