Algorithms for Query Processing and Optimization

51 2 0
Algorithms for Query Processing and Optimization

Đ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

MỤC LỤC 1.CƠ SỞ LÝ THUYẾT CỦA ĐỀ TÀI .3 Phần 1.1 Giới thiệu tổng quan về xử lý truy vấn 3 Phần 1.2 Chuyển các truy vấn sang đại số quan hệ (Relational Algebra) 4 Phần 1.3 Các thuật toán sắp xếp ngoại (External Sorting) 7 Phần 1.4 Giải thuật về phép chọn (SELECT Operation) và phép kết (JOIN Operation)9 Phần 1.5 Giải thuật về phép chiếu (PROJECT Operation) và toán tử tập hợp (SET Operation) 13 Phần 1.6 Các toán tử tích hợp (Aggregate Operation) và phép kết OUTER (OUTER JOIN) 15 Phần 1.7 Sử dụng Pipelining 18 Phần 1.8 Tối ưu hóa truy vấn dùng Heuristic .19 Phần 1.9 Tối ưu hóa truy vấn dùng phương pháp chọn và ước lượng chi phí ( Selectivity and Cost Estimates) 27 2 TÌM HIỂU PHƯƠNG PHÁP TỐI ƯU DỰA VÀO CÔNG CỤ ƯỚC LƯỢNG CHI PHÍ (Cost-based Optimizer - CBO) TRONG ORACLE 35 Phần 2.1 Công cụ tối ưu dựa vào ước lượng chi phí (Cost-based Optimizer - CBO) trong Oracle 35 Phần 2.2 Các yếu tố ảnh hưởng đến ước lượng chi phí trong Oracle 43 Phần 2.3 Thực nghiệm .47 Phần 2.4 Các vấn đề của tối ưu dựa vào ước lượng chi phí 48 Phần 2.5 Kết luận .48 Phần 2.6 Hướng phát triển 48 TÀI LIỆU THAM KHẢO 48 [Algorithms for Query Processing and Optimization] LỜI MỞ ĐẦU Lời nói đầu tiên, nhóm thực hiện đề tài gửi lòng biết ơn sâu sắc cùng lời cảm ơn chân thành đến thầy PGS.TS Đặng Trần Khánh vì đã hướng dẫn chúng tôi hoàn thành khóa học này với những kiến thức bổ ích liên quan đến môn học cơ sở dữ liệu nâng cao Những kiến thức này góp phần làm nền tảng cho chúng tôi không chỉ trong tư duy làm việc mà còn thực sự hữu ích cho những nghiên cứu chuyên sâu hơn trong tương lai và khi thực hiện tìm hiểu vấn đề tối ưu hóa câu truy vấn trong DBMS thông đề tài môn học Algorithms for Query Processing and Optimization thì chúng tôi càng hiểu rõ hơn kiến thức mà thầy đã hướng dẫn Chúng tôi trân trọng gửi lời chúc sức khỏe đến thầy và mong rằng thầy luôn vui khỏe để tiếp tục hướng dẫn tận tình các khóa học sau Chúng tôi chân thành cảm ơn Nhóm thực hiện đề tài Group 4 Trang 2 [Algorithms for Query Processing and Optimization] 1.CƠ SỞ LÝ THUYẾT CỦA ĐỀ TÀI Phần 1.1 Giới thiệu tổng quan về xử lý truy vấn Tối ưu hóa câu truy vấn là tiến trình lựa chọn kế hoạch thực thi (Execution Plan) câu truy vấn một cách hiệu quả nhất, nghĩa là ít tốn tài nguyên nhất và trả ra kết quả nhanh nhất Trong phần báo cáo này, nhóm sẽ thảo luận về các kỹ thuật được sử dụng bên trong một DBMS để xử lý, tối ưu hóa, và thực thi các truy vấn mức cao Một truy vấn thể hiện bởi một ngôn ngữ truy vấn mức cao như SQL đầu tiên phải được quét, phân tích, và xác nhận hợp lệ Các bước xử lý câu truy vấn cấp cao như sau: Hình 1 Bước 1 (Scanning, Parsing, validating) 1 Bộ quét (scanner) xác định các thẻ (token) truy vấn, như các từ khóa SQL, tên thuộc tính, và mối quan hệ - xuất hiện trong các truy vấn Group 4 Trang 3 [Algorithms for Query Processing and Optimization] 2 Bộ phân tích cú pháp (parser) dùng để kiểm tra cú pháp truy vấn để xác định các quy tắc cú pháp (quy tắc ngữ pháp) của ngôn ngữ truy vấn 3 Bộ xác nhận hợp lệ (validated) dùng để kiểm tra tên thuộc tính, tên quan hệ trong lược đồ có được khai báo không và các mối quan hệ có hợp lệ (nghĩa là không nhập nhằng giữa các thuộc tính và kiểu dữ liệu dùng để so sánh có hợp lệ không ) và có ý nghĩa trong lược đồ của cơ sở dữ liệu cụ thể được truy vấn 4 Thể hiện lại câu truy vấn biểu diễn bên trong bằng một cấu trúc dữ liệu gọi là cây truy vấn (query tree) hoặc đồ thị truy vấn (query graph) Bước 2 (Query Optimizer): 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 (Query Code Generator) : Bộ phát sinh mã sẽ cho ra mã để thực thi câu truy vấn theo chiến lược vừa được chọn Bước 4 (Runtime Database Processor) : Thực hiện mã đã phát sinh Nếu có lỗi thực thi xảy ra thì bộ phận này sẽ báo lỗi Thuật ngữ tối ưu hóa thực sự gây nhầm lẫn vì trong một số trường hợp việc lựa chọn kế hoạch thực thi không phải là tối ưu (hoặc tốt nhất) mà chỉ là chiến lược hợp lý để thực hiện các truy vấn Việc tìm kiếm các chiến lược tối ưu thường là quá trình tốn thời gian Ngoài ra, để tìm chiến lược thực thi tối ưu có thể cần tới thông tin chi tiết về cách cài đặt các tập tin thậm chí cả về nội dung của các tập tin – là những thông tin có thể không hoàn toàn có sẵn trong các danh mục của một DBMS Do đó, kế hoạch của một chiến lược thực thi tốt là khái niệm mô tả chính xác hơn so với thuật ngữ tối ưu hóa truy vấn Phần 1.2 Chuyển các truy vấn sang đại số quan hệ (Relational Algebra) Trong thực tế, SQL là ngôn ngữ truy vấn được sử dụng trong hầu hết các RDBMS thương mại Một câu truy vấn SQL trước tiên phải được dịch sang một biểu thức đại số quan hệ mở rộng tương đương, được biểu diễn bởi cấu trúc dữ liệu cây, và sau đó được tối ưu hóa Thông thường, các câu truy vấn SQL được phân rã thành các khối truy vấn (query block), là các đơn vị cơ bản có thể chuyển sang các toán tử đại số và được tối ưu Group 4 Trang 4 [Algorithms for Query Processing and Optimization] hóa Một khối truy vấn chứa một mệnh đề SELECT-FROM-WHERE đơn, cũng như mệnh đề GROUP BY và HAVING nếu chúng là một phần của khối Do đó, các truy vấn lồng nhau trong một câu truy vấn được xác định như các khối truy vấn riêng biệt Vì SQL gồm cả các toán tử gộp như MAX, MIN, SUM và COUNT - các toán tử này cũng được gộp trong đại số mở rộng Hình 2 dưới đây cho ta thấy các query block gồm outer block (khối truy bên ngoài) và inner block (khối truy vấn bên trong) Hình 2 Trang 5 Xem xét câu truy vấn SQL trên quan hệ EMPLOYEE như sau: SELECT Lname, Fname FROM EMPLOYEE WHERE Salary > ( SELECT MAX (Salary) FROM EMPLOYEE Group 4 WHERE Dno=5 ); [Algorithms for Query Processing and Optimization] Truy vấn này lấy ra tên của các nhân viên (từ bất kỳ phòng ban nào trong công ty) những người có mức lương cao hơn mức lương cao nhất trong phòng 5 Truy vấn gồm một truy vấn con lồng nhau và do đó sẽ được phân rã thành hai khối Khối bên trong là: ( SELECT MAX (Salary) FROM EMPLOYEE WHERE Dno=5 ) Câu truy vấn này tìm những người có lương cao nhất trong phòng 5 Khối truy vấn ngoài là: SELECT Lname, Fname FROM EMPLOYEE WHERE Salary > c trong đó c đại diện cho các kết quả trả về từ khối bên trong Khối bên trong có thể được chuyển sang biểu thức đại số quan hệ mở rộng sau: MAX Salary(σDno=5(EDno=5(EMPLOYEE)) và khối bên ngoài được chuyển sang biểu thức: πLname,Fname(σDno=5(ESalary>c(EMPLOYEE)) Bộ tối ưu truy vấn (Query Optimizer) sau đó sẽ chọn một kế hoạch thực thi (Execution Plan ) cho mỗi khối truy vấn Chú ý rằng trong ví dụ trên, các khối bên trong được đánh giá chỉ một lần để tạo ra mức lương tối đa của nhân viên trong phòng 5, sau đó được sử dụng như hằng số c – bởi khối bên ngoài Chúng được gọi là truy vấn lồng (không có tương quan với các truy vấn bên ngoài) Tối ưu hóa sẽ khó thực hiện hơn đối với các truy vấn lồng nhau có tương quan phức tạp hơn, trong đó một bộ từ khối truy vấn bên ngoài xuất hiện trong mệnh đề WHERE của khối truy vấn bên trong Group 4 Trang 6 [Algorithms for Query Processing and Optimization] Phần 1.3 Các thuật toán sắp xếp ngoại (External Sorting) Sắp xếp là một trong những thuật toán chính được sử dụng trong xử lý truy vấn Ví dụ, bất kì khi nào một truy vấn SQL chỉ ra một mệnh đề ORDER BY, kết quả truy vấn phải được sắp xếp Sắp xếp cũng là một thành phần quan trọng trong các thuật toán sắp xếp trộn được sử dụng cho phép toán JOIN và các toán tử khác (như UNION và INTERSECTION), và các thuật toán loại bỏ trùng lặp đối với các phép toán PROJECT (khi một truy vấn SQL có từ khóa DISTINCT trong mệnh đề SELECT) nhưng nếu tập tin được đánh chỉ mục thích hợp, việc sắp xếp sẽ không cần thiết - ví dụ như đánh chỉ mục chính hoặc chỉ mục gom nhóm trên các thuộc tính mong muốn của tập tin để cho phép truy cập có thứ tự các bản ghi của tập tin Sắp xếp ngoài đề cập đến các thuật toán sắp xếp thích hợp cho các tập tin có số lượng bản ghi lớn lưu trữ trên đĩa mà các bản ghi này không thể lưu trong bộ nhớ chính, ví dụ như các tập tin cơ sở dữ liệu Thuật toán sắp xếp ngoài điển hình sử dụng chiến lược sắp xếp trộn( Merge Sort) là phương pháp sắp xếp bắt đầu từ những tập tin con của tập tin chính - được gọi là run –và sau đó trộn các run đã sắp xếp, tạo ra những tập tin sắp xếp lớn hơn, sau đó được trộn lần lượt Thuật toán sắp xếp trộn, giống như các thuật toán cơ sở dữ liệu khác, đòi hỏi không gian đệm trong bộ nhớ chính, nơi mà sự sắp xếp và trộn run được thực hiện.Thuật toán cơ bản bao gồm hai giai đoạn: + Giai đoạn sắp xếp (Sorting Phase) + Giai đoạn trộn (Merging Phase) Không gian đệm trong bộ nhớ chính là một phần của bộ nhớ cache DBMS - một phân vùng trong bộ nhớ chính của máy tính được điều khiển bởi các DBMS Không gian đệm chia thành các bộ đệm riêng rẽ, trong đó mỗi bộ đệm có cùng kích thước tính theo byte bằng kích thước của một khối đĩa Vì vậy, một bộ đệm có thể chứa nội dung đầy đủ của một khối đĩa Trong giai đoạn sắp xếp, các run (phần hoặc mảnh) của tập tin có kích thước phù hợp với vùng không gian bộ đệm được đọc vào bộ nhớ chính, sử dụng một thuật toán sắp xếp nội để sắp xếp, và ghi trở lại vào đĩa như là các tập tin con đã được sắp xếp tạm thời (hoặc Group 4 Trang 7 [Algorithms for Query Processing and Optimization] là các run) Kích thước của mỗi run và số các run ban đầu (nR) được quyết định bởi số lượng các khối (b) và không gian bộ đệm có sẵn (nB) Ví dụ, kích thước bộ đệm trong bộ nhớ chính nB = 5 khối đĩa và kích thước của tập tin b = 1024 khối đĩa, khi đó nR =é(b / nB)ù hoặc 205 run ban đầu mỗi run có kích thước 5 khối (trừ run cuối cùng sẽ chỉ có 4 khối) Do đó, sau giai đoạn này, 205 run đã sắp xếp (hay 205 tập con của tập tin ban đầu được sắp xếp) và được lưu như những tập con tạm thời trên đĩa Trong giai đoạn trộn, các run đã sắp xếp được trộn trong một hoặc nhiều chuyến trộn Mỗi chuyến trộn có thể có một hoặc nhiều bước trộn Độ trộn (degree of merging - dM) là số lượng các tập con đã sắp xếp có thể được trộn trong mỗi bước Trong mỗi bước trộn, cần một khối đệm để lưu một khối đĩa từ mỗi tập con đã sắp xếp được trộn, và một bộ đệm bổ sung cần thiết để chứa một khối đĩa của các kết quả hợp nhất, mà sẽ tạo ra một tập tin được sắp xếp lớn hơn đó là kết quả của việc trộn một số các tập tin con nhỏ hơn Do đó, dM nhỏ hơn (nB -1) và nR, và số các chuyến trộn là é(logdM (nR)ù Trong ví dụ ở trên nB = 5, dM = 4 (trộn bốn đường), vì vậy 205 run đã sắp xếp ban đầu sẽ được trộn theo từng 4 run trong mỗi bước tạo thành 52 tập con lớn hơn đã sắp xếp tại cuối chuyến trộn đầu tiên 52 tập con này lại được trộn theo 4 đường tạo thành 13 tập con được sắp xếp, được trộn tiếp thành 4 tập tin được sắp xếp Cuối cùng 4 tập tin này được trộn vào 1 tập tin được sắp xếp đầy đủ, có nghĩa là sau 4 chuyến trộn chúng ta đã sắp xếp xong tập tin ban đầu Sau đây là mã giả của thuật toán sắp xếp ngoại: set i←←1; ←1;1; j ←←1; b; {size of the file in blocks} k ←←1;nB; {size of buffer in blocks} m ←←1;éj/k)ù; {Sorting Phase} while (i ≤←1;m) do { read next k blocks of the file into the buffer or if there are less than k blocks remaining, then read in the remaining blocks; sort the records in the buffer and write as a temporary subfile; i ←←1; i + 1; Group 4 Trang 8 [Algorithms for Query Processing and Optimization] } {Merging Phase: merge subfiles until only 1 remains} set i ←1←1; ; p ←←1;élogk–1mù {←1; p is the number of passes for the merging phase} j ←←1;m; while (i ≤←1;p) do { n ←1←1; ; q ←←1; éj/(k–1)ù; {number of subfiles to write in this pass} while (n ≤←1;q) do { read next k–1 subfiles or remaining subfiles (from previous pass) one block at a time; merge and write as new subfile one block at a time; n ←←1;n + 1; } j ←1; ← q; i ←←1;i + 1; } Phần 1.4 Giải thuật về phép chọn (SELECT Operation) và phép kết (JOIN Operation) Phần 1.4.1 Giải thuật về phép chọn (SELECT Operation) Có rất nhiều giải thuật để thực hiện phép chọn, mà về cơ bản là một hoạt động tìm kiếm để xác định vị trí các bản ghi trong một tập tin trên đĩa đáp ứng một điều kiện nhất định Một số thuật toán tìm kiếm phụ thuộc vào các tập tin có đường dẫn truy cập cụ thể, và họ có thể chỉ áp dụng cho một số loại lựa chọn theo điều kiện nhất định nào đó Ví dụ : các điều kiện chọn sau đây sử dụng cho các phép chọn được giải thích bên dưới:  (OP1):  SSN='123456789' (EMPLOYEE)  (OP2):  DNUMBER>5(DEPARTMENT)  (OP3):  DNO=5(EMPLOYEE)  (OP4):  DNO=5 AND SALARY>30000 AND SEX=F(EMPLOYEE)  (OP5):  ESSN=123456789 AND PNO=10(WORKS_ON) Group 4 Trang 9 [Algorithms for Query Processing and Optimization] Khi thực hiện phương pháp tìm kiếm (Search Method) cho phép chọn đơn (Simple Selection) ta có nhiều giải thuật cho phép chọn như sau: + Giải thuật S1 – Tìm kiếm tuyến tính (giải thuật brute force): Lấy tất cả các bản ghi (record) trong tập tin, và kiểm tra xem giá trị thuộc tính của nó thỏa mãn điều kiện lựa chọn Kể từ khi hồ sơ được nhóm lại thành các khối đĩa, mỗi khối đĩa được đọc vào một bộ nhớ đệm chính, và sau đó tìm kiếm thông qua các hồ sơ trong khối đĩa được thực hiện trong bộ nhớ chính Nghĩa là đọ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 + Giải thuật S2 – Tìm kiế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, lúc này sử dụng tìm kiếm nhị phân sẽ hiệu quả hơn tìm kiếm tuyến tính Ví dụ : trong (OP1) nếu thuộc tính SSN là thuộc tính cần kiểm tra điều kiện trong lược đồ quan hệ EMPLOYEE + Giải thuật S3a – Dùng chỉ mục chính (Primary Index): để đọc mẫu tin nếu điều kiện chọn là so sánh bằng trên thuộc tính khóa đã khai báo là Primary Index Ví dụ: điều kiện SSN = '123456789' trong (OP1) sử dụng các Primary Index để lấy bản ghi Lưu ý rằng điều kiện này lấy một bản ghi đơn + Giải thuật S3b – Dùng Hash Key: để đọc mẫu tin nếu điều kiện chọn là so sánh bằng trên thuộc tính khóa đã khai báo là Hash Key Ví dụ: điều kiện SSN = '123456789 ' trong (OP1) - sử dụng khóa băm để lấy bản ghi + Giải thuật S4 – Dùng Primary Index để tìm nhiều mẫu tin: nếu điều kiện chọn là so sánh >, >=, < hay 5 trong (OP2) thì dùng chỉ mục để tìm kiếm thông qua so sánh bằng (Dnumber = 5), sau đó lấy tất cả bản ghi tiếp theo trong file (đã được sắp xếp) Đối với điều kiện Dnumber

Ngày đăng: 27/03/2024, 19:17

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan