1. Trang chủ
  2. » Công Nghệ Thông Tin

TỐI ƯU TRUY VẤN

57 2,5K 9

Đ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 57
Dung lượng 296,15 KB

Nội dung

Tài liệu CƠ SỞ DỮ LIỆU

3/28/14 Tối ưu truy vấn 1 Chương 9 TỐI ƯU TRUY VẤN 3/28/14 Tối ưu truy vấn 2 Giới thiệu  Các ngôn ngữ bậc cao nói chung khi xử lý trong máy đều rất tốn nhiều thời gian.  Tối ưu câu hỏi: là quá trình biến đổi câu hỏi sang một câu hỏi tương đương(nghĩa là cho cùng một kết quả) để giảm thiểu thời gian tính toán.  Việc tối ưu không nhất thiết phải trên mọi khả năng có thể của các cách cài đặt của các câu hỏi. Chúng ta có thể thỏa hiệp giữa giải thuật phức tạp hoặc/và tốn kém không gian lưu trữ với việc tiết kiệm thời gian xử lý. 3/28/14 Tối ưu truy vấn 3 Giới thiệu  Giả sử để xử lý 1000 bản ghi mất 1 giây → để xử lý 4.850.000 bản ghi chúng ta mất 4.850 giây: đây quả là một thời gian khó chấp nhận cho việc chờ đợi kết quả của một câu truy vấn !  Khi tối ưu hóa xử lý thông tin người ta ưu tiên tối ưu hóa về thời gian hơn là tối ưu hóa lưu trữ dữ liệu, thậm chí “hy sinh” luôn cả dạng chuẩn để đạt được tốc độ xử lý nhanh hơn.  Dung lượng đĩa cứng ngày nay đã đạt được một mức độ khá lớn, tuy nhiên cũng có khả năng thiếu không gian tính toán cho máy nếu chúng ta không lưu tâm đến việc tối ưu hóa truy vấn, đặc biệt là câu truy vấn có sử dụng phép tích đề-các và kết. 3/28/14 Tối ưu truy vấn 4 Giới thiệu  R(A 1 ,A 2 , , A n ) và S(B 1 ,B 2 , , B n )  Giả sử R và S đều có 10 thuộc tính, mỗi thuộc tính có kích thước khoảng 5 bytes (điều này ít có ở thực tế) và 1000 bản ghi.  R x S: sẽ cho ra quan hệ trung gian này 20 thuộc tính, 1.000.000 bản ghi và chiếm hết 1/10 Giga bytes.  Thêm vào đó, thời gian truy cập csdl và truy xuất đĩa để tạo ra số lượng bản ghi đó không là ít.  Sự “bùng nổ” về số lượng và “bành trướng” về kích thước(chiều dài) bản ghi → cần phải tối ưu câu hỏi trước khi đưa vào máy tính toán 5 Giới thiệu SELECT B, D FROM R, S WHERE R.A=‘c’ AND S.E=2 AND R.C=S.C  R(A, B, C)  S(C, D, E) Tối ưu truy vấn 6 Giới thiệu (tt) 10 x 2 C D ES 20 y 2 30 z 2 40 x 1 50 y 3 c 2 10 A B CR a 1 10 b 1 10 d 2 10 e 3 10 Kết quả B D 2 x  Câu truy vấn được thực hiện như thế nào? Tối ưu truy vấn 7 Giới thiệu (tt)  Cách 1 - 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)] Tối ưu truy vấn 8 Giới thiệu (tt) A B CRxS a 1 10 c 2 10 x 210 C D E 10 x 2 a 1 10 20 y 2 c 2 10 y 220 . . . c 2 10 z 230 . . . Tối ưu truy vấn 9 Giới thiệu (tt)  Cách 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)] Tối ưu truy vấn 10 Giới thiệu (tt) C D E 10 x 2 20 y 2 30 z 2 40 x 1 50 y 3 SA B C a 1 10 b 1 10 c 2 10 d 2 10 e 3 10 R A B C a 2 10 σ R C D E 10 x 10 σ S 20 y 10 30 z 10 Tối ưu truy vấn [...]... } Tối ưu truy vấn 22 Biến đổi sang ĐSQH  Truy vấn đơn - Xét câu trúc  Thay thế thành các biến quan hệ ∗ Sử dụng phép tích cartesian cho các biến quan hệ  Thay thế thành phép chọn σC  Thay thế thành phép chiếu πL πL σC Cây truy vấn x R Tối ưu truy vấn S T … 23 Xét ví dụ 2 πcusNm σCustomer.cusID=Account.cusID ∧ balance=100 x Customer Account Tối ưu truy vấn. .. σbalance=10 Account Tối ưu truy vấn 28 Xét ví dụ 1 (tt) πcusNm Customer.cusID=Account.cusID Customer δ πcusID σbalance=10 Account Tối ưu truy vấn 29 Ví dụ 3   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) Tối ưu truy vấn 30 Ví dụ 3 (tt) πcusNm...  Truy vấn lồng - Tồn tại câu truy vấn con S trong Áp dụng qui tắc cho truy vấn con Phép chọn 2 biến (two-argument selection)    Nút là phép chọn không có tham số Nhánh con trái là biến quan hệ R Nhánh con phải là áp dụng cho mỗi bộ trong R σ R Tuple Tối ưu truy vấn Operator S 25 Xét ví dụ 1 πcusNm σ Customer cusID Tối ưu truy. .. Kết các bộ phù hợp của R và S Chiếu trên thuộc tính B và D Tối ưu truy vấn 11 Giới thiệu (tt) R A A B C a 1 1 10 c 2 10 d 2 10 e 3 10 S C 10 b =‘c’ Kiểm tra E=2? Kết quả D E x 2 20 y 2 30 C 10 I2 I1 z 2 40 x 1 50 y 3 Bộ có A=‘c’ kế tiếp Tối ưu truy vấn 12 Giới thiệu (tt) DBMS thực hiện cách nào Tối ưu truy vấn 13 Bộ biên dịch SQL Query Tập trung vào RDBMS Parse... } Tối ưu truy vấn 33 Nguyên tắc để tối ưu câu hỏi(tt)  Việc biến đổi câu hỏi thành câu hỏi tương đương như ví dụ nêu trên là một minh họa cho việc giảm bớt thời gian trả lời câu hỏi bằng cách giảm bớt số lần cần truy cập tới bộ nhớ thứ cấp dựa trên nguyên tắc thực hiện phép chọn càng sớm càng tốt Trình tự thực hiện các phép tính sẽ đóng một vai trò quan trọng quá trình tổ chức câu hỏi 3/28/14 Tối ưu. .. physical plan Physical query plan tree Execute plan Tối ưu truy vấn 14 Quá trình biên dịch Query Parse Parse tree Answer Convert Logical query plan Execute statistics Apply laws Pi Improve logical query plan Pick the best Estimate {(P1,C1), (P2,C2) … } result sizes Estimate costs Logical query plan + sizes Consider physical plans {P1, P2, … } Tối ưu truy vấn 15 Cây phân tích SELECT ... IN LIKE AND … Tối ưu truy vấn 16 Ví dụ 1   Customer(cusID, cusNm, cusStreet, cusCity) Account(accID, cusID, balance) SELECT cusNm FROM Customer WHERE cusID IN ( SELECT cusID FROM Account WHERE balance > 100) Tối ưu truy vấn 17 Ví dụ 1 (tt) SELECT FROM Customer WHERE... SELECT FROM Account cusID Tối ưu truy vấn WHERE balance = 100 18 Ví dụ 2   Customer(cusID, cusNm, cusStreet, cusCity) Account(accID, cusID, balance) SELECT cusNm FROM Customer, Account WHERE Customer.cusID = Account.cusID AND balance = 100 Tối ưu truy vấn 19 Ví dụ 2 (tt) SELECT FROM... a.cusID=c.cusID) Tối ưu truy vấn 30 Ví dụ 3 (tt) πcusNm σ X Customer c 10000 ≥ γSUM(a.balance) σc.custID=a.cusID Account a Tối ưu truy vấn 31 Ví dụ 3 (tt) πc.cusNm σ10000 ≥ SoB c.cusID = a.cusID γa.custID, SUM(a.balance) Customer c SoB Account a Tối ưu truy vấn 32 Quá trình biên dịch Query Parse Parse tree Answer Convert Logical query plan Execute statistics Apply laws Pi Improve logical... cusNm Customer Account WHERE Tối ưu truy vấn Account.cusID Customer.cusID = AND balance 20 = 100 Nhận xét  Giới hạn - GROUP BY HAVING ORDER BY DISTINCT - Aggregation function (Max, Min, Count, Sum, Avg) - Alias name Tối ưu truy vấn 21 Quá trình biên dịch Query Parse Parse tree Answer Convert Logical query . vấn 14 Bộ biên dịch SQL Query Parse query Select logical query plan Select physical plan Execute plan Query expression tree Logical query plan tree Physical query plan tree Query optimization Tập trung. dịch Parse Query Convert Apply laws Estimate result sizes Consider physical plans Estimate costs Pick the best Execute Answer Parse tree Logical query plan Improve logical query plan Logical query. dụ 1 (tt) < ;Query& gt; <SFW> SELECT <SelectList> FROM <FromList> WHERE <Condition> <Attribute> <Relation> cusNm Customer <Tuple> IN < ;Query& gt; <Attribute> cusID

Ngày đăng: 28/03/2014, 21:23

TỪ KHÓA LIÊN QUAN

w