Bài giảng Các hệ cơ sở dữ liệu: Tối ưu hóa truy vấn - Lương Trần Hy Hiến

32 0 0
Bài giảng Các hệ cơ sở dữ liệu: Tối ưu hóa truy vấn - Lương Trần Hy Hiến

Đ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

5.1 Xử lý câu truy vấn Nội dung chi tiết    Giới thiệu Bộ biên dịch câu truy vấn (query compiler) Phân tích cú pháp        R(A, B, C) S(C, D, E) Cây phân tích (parse tree) Chuyển phân tích sang ðSQH  Giới thiệu Câu truy vấn ñơn giản Câu truy vấn lồng - lồng tương quan Qui tắc tối ưu truy vấn Ước lượng chi phí DBMS05 – Slides SELECT FROM WHERE B, D R, S R.A=‘c’ AND S.E=2 AND R.C=S.C DBMS05 – Slides Giới thiệu (tt)  Giới thiệu (tt) Câu truy vấn ñược thực nào? R A a B C 10 b c S C D E 10 x 10 20 y  10 30 z  d 10 40 x  e 10 50 y Kết B D x  Cách Tích cartesian Phép chọn (selection) Phép chiếu (projection) ΠB,D [ σR.A=‘c’ ∧ S.E=2 ∧ R.C = S.C (RxS)] DBMS05 – Slides DBMS05 – Slides Giới thiệu (tt) Giới thiệu (tt)  RxS A a a B C C D 10 10 x 10 20 y c c c 10 10 x 10 20 y 10 30 z E 2 Cách    DBMS05 – Slides 2 Phép chọn (selection) Phép kết (natural join) Phép chiếu (projection) ΠB,D [ σR.A=‘c’ (R) σS.E=2 (S)] DBMS05 – Slides Giới thiệu (tt) R A a b c d e B 1 2 C 10 10 10 10 10 S C 10 20 30 40 50 D x y z x y Giới thiệu (tt) E 2  Cách - sử dụng mục R.A S.C    σR A c σS B C 10 C 10 20 30 D x y z E 2   Tìm R thỏa R.A=‘c’ Với tìm thấy, tìm tiếp S thỏa R.C=S.C Bỏ ñi S.E ≠ Kết phù hợp R S Chiếu thuộc tính B D DBMS05 – Slides DBMS05 – Slides 10 Giới thiệu (tt) R A =‘c’ Câu hỏi C A B C a b c d e 1 2 10 10 10 Kiểm tra 10 Kết E=2? 10 I2 I1 C S D E 10 20 30 40 50 x y z x y 2 Bộ có A=‘c’ DBMS05 – Slides 11 DBMS05 – Slides 12 Bộ biên dịch Giới thiệu (tt) SQL Query Tập trung vào RDBMS Parse query Query expression tree DBMS thực cách Select logical query plan Query optimization Logical query plan tree Select physical plan Physical query plan tree Execute plan DBMS05 – Slides 13 DBMS05 – Slides 14 Q trình biên dịch Cây phân tích Query Parse Parse tree Answer Convert Logical query plan Execute statistics Apply laws WHERE FROM Pi Improve logical query plan Pick the best Estimate result sizes {(P1,C1), (P2,C2) … } Logical query plan + sizes Consider physical plans SELECT Estimate costs = IN LIKE AND … {P1, P2, … } DBMS05 – Slides 15 DBMS05 – Slides 16 Ví dụ   Ví dụ (tt) Customer(cusID, cusNm, cusStreet, cusCity) Account(accID, cusID, balance) SELECT SELECT cusNm FROM Customer WHERE cusID IN ( SELECT cusID FROM Account WHERE balance > 100) cusNm Customer  IN SELECT FROM Account DBMS05 – Slides 17  cusID cusID Ví dụ WHERE FROM WHERE = balance 100 DBMS05 – Slides 18 Ví dụ (tt) Customer(cusID, cusNm, cusStreet, cusCity) Account(accID, cusID, balance) SELECT cusNm FROM Customer, Account WHERE Customer.cusID = Account.cusID AND balance = 100 SELECT cusNm , Customer Account AND = Customer.cusID DBMS05 – Slides 19 WHERE FROM = Account.cusID DBMS05 – Slides 20 balance 100 Nhận xét  Câu hỏi Giới hạn        GROUP BY HAVING ORDER BY DISTINCT Aggregation function (Max, Min, Count, Sum, Avg) Vẽ cấu trúc câu truy vấn sau: SELECT * FROM Customers SELECT CustomerID, CustomerName FROM Customers WHERE CustomerID in (SELECT CustomersID FROM Invoices WHERE TotalCost > 1000) Alias name DBMS05 – Slides 21 Tiền xử lý (preprocessing) DBMS05 – Slides 22 Quá trình biên dịch Query  Kiểm tra ngữ nghĩa      Parse Quan hệ Thuộc tính Parse tree Select From Logical query plan Execute statistics Apply laws Kiểu liệu  Answer Convert Pi Improve logical query plan Where Pick the best Estimate result sizes {(P1, C1), (P2,C2) … } Logical query plan + sizes Consider physical plans DBMS05 – Slides 23 Estimate costs {P1, P2, … } DBMS05 – Slides 24 Biến đổi sang ðSQH  Xét ví dụ Truy vấn ñơn  Xét câu trúc  Thay thành biến quan hệ    Sử dụng phép tích cartesian cho biến quan hệ Thay thành phép chọn σC Thay thành phép chiếu πL π σ πcusNm σCustomer.cusID=Account.cusID ∧ balance=100 x L C Customer Cây truy vấn Account x R S T … DBMS05 – Slides 25 DBMS05 – Slides 26 Xét ví dụ Biến đổi sang ðSQH (tt)  Truy vấn lồng    πcusNm Tồn câu truy vấn S Áp dụng qui tắc cho truy vấn Phép chọn biến (two-argument selection)  Nút phép chọn khơng có tham số  Nhánh trái biến quan hệ R  Nhánh phải áp dụng cho R σ Customer σ R Tuple DBMS05 – Slides 27 Operator S cusID IN ΠcusID σbalance=100 Account DBMS05 – Slides 28 Biến ñổi sang ðSQH (tt)  Xét ví dụ (tt) πcusNm Truy vấn lồng  Biến ñổi phép chọn biến    σCustomer.cusID=Account.cusID Thay có gốc S  Nếu S có trùng phải lược bỏ bớt trùng  Sử dụng phép δ Thay phép chọn biến thành σC σC kết phép cartesian R S σ σ X Customer C πcusID σbalance=10 x R R Tuple Operator δ S DBMS05 – Slides 29 Account S DBMS05 – Slides 30 Xét ví dụ (tt) πcusNm Ví dụ   Customer.cusID=Account.cusID Customer δ πcusID σbalance=10 Account DBMS05 – Slides 31 δ Customer(cusID, cusNm, cusStreet, cusCity) Account(accID, cusID, balance) SELECT c.cusNm Truy vấn lồng tương quan FROM Customer c WHERE 10000 >= ( SELECT SUM(a.balance) FROM Account a WHERE a.cusID=c.cusID) DBMS05 – Slides 32 Ví dụ (tt) Ví dụ (tt) πcusNm σ πc.cusNm σ10000 ≥ SoB X Customer c 10000 ≥ c.cusID = a.cusID γSUM(a.balance) Customer c γa.custID, SUM(a.balance) σc.custID=a.cusID SoB Account a Account a DBMS05 – Slides 33 Câu hỏi DBMS05 – Slides 34 Quá trình biên dịch Query Biến ñổi câu truy vấn sau sang ñại số quan hệ: Select custID, CustomerName, InvoieID From Customers, Invoices Where Customers.custID = Invoices.custID  Parse Parse tree Answer Convert Logical query plan Execute statistics Apply laws Pi Improve logical query plan {(P1, C1), (P2,C2) … } Logical query plan + sizes Consider physical plans DBMS05 – Slides 35 Pick the best Estimate result sizes Estimate costs {P1, P2, … } DBMS05 – Slides 36 Qui tắc: Phép chọn σ Qui tắc: Kết tự nhiên, tích cartesian, hội R (R S = S R S) T = R (S  Cho  T)  RxS=SxR (R x S) x T = R x (S x T)  p vị từ có thuộc tính R q vị từ có thuộc tính S m vị từ có thuộc tính R S Pushing selections σp1∧∧p2(R) σp1vp2(R) R∪S=S∪R R ∪ (S ∪ T) = (R ∪ S) ∪ T σp1 [ σp2 (R)] = [ σp1 (R)] ∪ [ σp2 (R)] = Quan hệ R tập hợp ∪S phép hội tập hợp DBMS05 – Slides 37 Qui tắc: σ, DBMS05 – Slides 38 Qui tắc: σ, σp (R S) = [ σq (R S) = R σp (R)] σq (S)] [ S σp∧q (R σp∧q∧m (R σp∨q (R DBMS05 – Slides 39 S) = [ S) = S) = (tt) [ σp (R)] σm [σp(R) σp (R) S] ∪ [R DBMS05 – Slides 40 σq (S)] [ σq (S)] σq (S)] Ước lượng: W = R1  Xét trường hợp X ∩ Y = A R1  R2 (tt) A B C R2 A D Ví dụ Z = R1(A, B) R2(B, C) R1 T(R1) = 1000 V(R1, A) = 50 V(R1, B) = 100 R2 T(R2) = 2000 V(R2, B) = 200 V(R3, C) = 300 R3(C, D) W(A, B, C, D)      Các thuộc tính khơng tham gia vào phép kết số lượng giá trị giữ nguyên V(W, A) = {V(R1, A), V(R2, A)} V(W, B) = V(R1, B) V(W, C) = V(R1, C) V(W, D) = V(R2, D) DBMS05 – Slides 69 Ví dụ (tt) U = R1(A, B) R3 T(R3) = 3000 V(R3, C) = 90 V(R3, D) = 500 DBMS05 – Slides 70 Ví dụ (tt) R2(B, C) T(U) = 1000 x 2000 200 Z=U V(U, A) = 50 V(U, B) = 100 V(U, C) = 300 DBMS05 – Slides 71 R3(C, D) T(Z) = 1000 x 2000 x 3000 200 x 300 DBMS05 – Slides 72 V(Z, V(Z, V(Z, V(Z, A) = 50 B) = 100 C) = 90 D) = 500 Ước lượng: W = R1 ∪ R2 Nhận xét Phép chiếu Phép tích Ước lượng xác  Phép chọn Phép kết Ước lượng tương ñối hợp lý - số lượng quan hệ tương ñối lớn - giá trị thuộc tính phân bố đồng  Phép tốn khác          Hội Giao Trừ Lược bỏ trùng lắp Gom nhóm T(W) = T(R1) + T(R2)  →T(W) = DBMS05 – Slides 73 Cách    R1 R2 T’(W) + T’’(W) DBMS05 – Slides 74 Ước lượng: W = R1 − R2  TH1: T(W) = T(R1)  TH2: T(W) = T(R1) – T(R2) TH1: T’(W)=0 TH2: T’’(W)= T(R1) T’’(W)=T(R2) Cách  R1 R2 set T’(W) = T(R1) + T(R2) T’’(W) ≤ T(R1) + T(R2) Ước lượng: W = R1 ∩ R2  R1 R2 bag →T(W) = T’(W) + T’’(W) Trường hợp ñặc biệt phép kết tự nhiên  → T(W) = T(R1) − T(R2) Chỉ áp dụng cho ∩S T(W) = T(R1) T(R2) max{V(R1, Z), V(R2, Z)} DBMS05 – Slides 75 DBMS05 – Slides 76 Ước lượng: W = γ (R) Ước lượng: W = δ(R)  TH1: T(W) =    Nếu R khơng có T(W)=0 TH2: T(W) = T(R)   R(a1, a2, …, an) Số phân biệt tối đa R tích V(R, ai), i=1 n → T(W) = min{ T(R1), tích V(R, ai)} γL(R)  Số lượng W số lượng nhóm  TH1: T(W) =  TH2: T(W) = T(R) R(a1, a2, …, an) ña → T(W) =nhóm min{ tối T(Rlà1), ai)}  Số lượng tíchtích cáccác V(R,V(R, ai), i=1 n  DBMS05 – Slides 77 DBMS05 – Slides 78 Ví dụ (tt) Ví dụ  δ R(a, b)   σa =10  250 δ T(R)=5000 V(R, a)=50 V(R, b)=100 R S S(b, c)    T(S)=2000 V(S, b)=200 V(S, c)=100 DBMS05 – Slides 79 δ δ σa =10 S 50 100  500 1000 1000 100 σa =10 S 2000 2000 R R 5000 5000 (1) (2) DBMS05 – Slides 80 Ví dụ (tt)  Cộng kích thước sau thực phép toán, ngoại trừ      Ước lượng số lần truy xuất IOs  Các tham số thống kê  Các nút Nút gốc   (1): 100+50+1000=1150 (2): 100+1000=1100 Phép lược bỏ trùng lắp thực sau tốt  B(R): tổng số block chứa tất R f(R): số tối ña block M: số block trống nhớ Quan tâm     Quan hệ R có gom thành cụm khơng (clustered)? Thuộc tính phép tốn có mục khơng (index)? Chỉ mục có gom cụm khơng (clustering index)? Kết cần thứ tự khơng? DBMS05 – Slides 81 DBMS05 – Slides 82 Clustering  Clustered-file R R S   R S T R S S T S T … U U R   S T …  Clustering index r1 r1 r1 r1 r1 R1  Clustered relation R  Ví dụ r1 r1 r1 r1 r1 r1 r1 r1 r1 r1 r1 r1 r1 r2 r2 r2 r1 r1 r2 r2 r2 r2 r2 r2 DBMS05 – Slides 83  … R2 T(R1) = 10000 T(R2) = 5000 S(R1) = S(R2) = 1/10 block M=101 blocks Số block ñược ñọc (bỏ qua việc ghi) ñể thực phép kết tự nhiên bao nhiêu? … DBMS05 – Slides 84 Nhận xét  Ước lượng số lần truy xuất IOs không cách tốt    Bỏ qua chi phí CPU Bỏ qua tham số thời gian Xét trường hợp M ñủ thiếu DBMS05 – Slides 85 DBMS05 – Slides 86 Nội dung chi tiết   5.2 Tối ưu hóa câu truy vấn Giới thiệu Kế hoạch truy vấn     Duyệt bảng Iterator Kế hoạch cho phép chọn Kế hoạch cho phép kết DBMS05 – Slides 88 Giới thiệu  Giới thiệu (tt) Tối ưu hóa câu truy vấn    Phát sinh kế hoạch truy vấn So sánh kế hoạch truy vấn Ước lượng chi phí chọn chi phí bé   Câu truy vấn Kế hoạch  … Phát sinh Tỉa cành X X Ước lượng chi phí  Chi phí Chú ý   Chọn chi phí bé Ước lượng trước sau chuyển ñổi từ truy vấn sang truy vấn khác Tính tốn chi phí (tìm min) Loại bỏ trường hợp chuyển đổi có chi phí lớn  Ước lượng kết trung gian Chưa ñịnh chọn cách thực phép toán Ước lượng chi phí khơng dựa vào việc truy xuất đĩa DBMS05 – Slides 89 Giới thiệu (tt) DBMS05 – Slides 90 Quá trình biên dịch Query  Giải thuật thuật tốn      Exhaustive search Branch and Bound search Greedy Hill Climbing Dynamic programming Parse Parse tree Answer Convert Logical query plan Execute statistics Apply laws Pi Improve logical query plan Pick the best Estimate result sizes {(P1, C1), (P2,C2) … } Logical query plan + sizes Consider physical plans DBMS05 – Slides 91 Estimate costs {P1, P2, … } DBMS05 – Slides 92 Kế hoạch truy vấn  Chọn phép tốn thích hợp      Table-scan Index-scan Sort-scan  R R R  Gồm hàm Open(), GetNext() Close() cho phép lấy quan hệ R Index-scan A A ðọc thơng qua mục Ind Chọn thuật tốn thích hợp cho phép tốn Ước lượng chi phí R R R DBMS05 – Slides 93 DBMS05 – Slides 94 Phương pháp duyệt bảng (tt) Phương pháp duyệt bảng (tt) Sort-scan  Table-scan ðọc block Iterators    Duyệt bảng   Phương pháp duyệt bảng  Sắp thứ tự lúc ñọc Cách    Nếu quan hệ R có thuộc tính a thứ tự, a có mục    Sort-scan   B-tree index Indexed-sequencial Duyệt mục Sắp thứ tự lúc ñọc Cách   Cách   DBMS05 – Slides 95 Nếu quan hệ R không lớn ðọc R phương pháp table-scan index-scan Dùng thuật toán thứ tự Nếu R lớn Dùng phương pháp trộn (multiway-merging) DBMS05 – Slides 96 Iterators  Chuẩn bị cấu trúc liệu phù hợp với quan hệ R GetNext(){ if(t is past the last tuple on block b){ increment b to the next block; if(there is no next block) return NotFound; else /*b is a new block*/ t := first tuple on block b } /*return t and increment*/ tmp := t; increment t to the next tuple of b; return tmp; } Close(){ } DBMS05 – Slides 98 GetNext()    Open(){ b := the first block of R; t := the first tuple of block b; } Open()   Iterators table-scan Trả Trả giá trị NotFound Close()  Dừng việc ñọc sau ñã ñọc hết R DBMS05 – Slides 97 Phép chọn - σC(R)  (1) Cho Aθc dạng so sánh      A thuộc tính có mục θ tốn tử so sánh =, >, < c số (2) Sử dụng phương pháp index-scan ñể truy xuất thỏa ñiều kiện (1) (3) Với thỏa (2), xét tiếp điều kiện cịn lại C (gọi bước Filter) DBMS05 – Slides 99 Ước lượng chi phí     Cho R(a, b) σC(R) Dùng table-scan + filter  Nếu R clustered: B(R)  Nếu R non-clustered: T(R) Dùng index-scan ñể chọn thỏa ñiều kiện a=val + filter  Nếu a clustering index: B(R) / V(R,a)  Nếu a non-clustering index: T(R) / V(R, a) Dùng index-scan ñể chọn thỏa ñiều kiện b

Ngày đăng: 12/09/2023, 06:34

Tài liệu cùng người dùng

Tài liệu liên quan