Postgresql 9.1.24 Tài liệu | ||||
---|---|---|---|---|
prev | UP | Chương 44. Tổng quan về PostgreSQL Internals | NEXT |
Nhiệm vụ củaMáy lập tỷ lệ kèo bóng đá tối nay ưu hóaIS Để tạo ra một tỷ lệ kèo bóng đá tối nay thực hiện tối ưu. Một truy vấn SQL nhất định (và Do đó, một cây truy vấn) thực sự có thể được thực hiện trong nhiều loại theo các cách khác nhau, mỗi cách sẽ tạo ra cùng một bộ kết quả. Nếu nó khả thi về mặt tính toán, trình tối ưu hóa truy vấn sẽ kiểm tra từng tỷ lệ kèo bóng đá tối nay thực thi có thể, cuối cùng chọn tỷ lệ kèo bóng đá tối nay thực thi dự kiến sẽ chạy nhanh nhất.
Lưu ý:Trong một số tình huống, kiểm tra từng tình huống có thể cách thực thi truy vấn có thể được thực thi sẽ mất quá nhiều Lượng thời gian và không gian bộ nhớ. Đặc biệt, điều này xảy ra Khi thực hiện các truy vấn liên quan đến số lượng lớn tham gia hoạt động. Để xác định hợp lý (không nhất thiết phải tối ưu) tỷ lệ kèo bóng đá tối nay truy vấn với số lượng hợp lý của thời gian,PostgreSQLSử dụng ATrình tỷ lệ kèo bóng đá tối nay truy vấn di truyền(xemChương 51) Khi số lượng tham gia vượt quá ngưỡng (xemgeqo_threshold).
Quy trình tìm kiếm của người lập tỷ lệ kèo bóng đá tối nay thực sự hoạt động với dữ liệu Cấu trúc được gọi làđường dẫn, đó là Đơn giản chỉ cần cắt giảm các đại diện của các tỷ lệ kèo bóng đá tối nay chỉ chứa nhiều Thông tin như người lập tỷ lệ kèo bóng đá tối nay cần đưa ra quyết định của mình. Sau Đường dẫn rẻ nhất được xác định, một bản thông tin đầy đủCây tỷ lệ kèo bóng đá tối nayđược xây dựng để chuyển cho người thực thi. Cái này đại diện cho tỷ lệ kèo bóng đá tối nay thực thi mong muốn một cách chi tiết đủ cho Người thực thi để chạy nó. Trong phần còn lại của phần này, chúng tôi sẽ bỏ qua sự khác biệt giữa các đường dẫn và tỷ lệ kèo bóng đá tối nay.
Trình lập tỷ lệ kèo bóng đá tối nay ưu hóa bắt đầu bằng cách tạo kế hoạch cho Quét từng mối quan hệ riêng lẻ (bảng) được sử dụng trong truy vấn. Các kế hoạch có thể được xác định bởi các chỉ mục có sẵn trên mỗi quan hệ. Luôn có khả năng thực hiện một Quét tuần tự về một mối quan hệ, vì vậy một kế hoạch quét tuần tự là luôn luôn được tạo ra. Giả sử một chỉ mục được xác định trên một mối quan hệ (đối với Ví dụ một chỉ mục B-Tree) và truy vấn chứa hạn chếMối quan hệ.Attribution opr hằng số. Nếu nhưMối quan hệ.Attributionxảy ra để phù hợp Khóa của chỉ mục B-Tree vàOPRIS một trong tỷ lệ kèo bóng đá tối nay toán tử được liệt kê trong chỉ mụcLớp toán tử, một tỷ lệ kèo bóng đá tối nay khác được tạo bằng cách sử dụng Chỉ số B-Tree để quét mối quan hệ. Nếu có thêm chỉ mục hiện tại và các hạn chế trong truy vấn xảy ra Kết hợp một khóa của một chỉ mục, các tỷ lệ kèo bóng đá tối nay tiếp theo sẽ được xem xét. Các tỷ lệ kèo bóng đá tối nay quét chỉ mục cũng được tạo cho các chỉ mục có Sắp xếp thứ tự có thể khớp với truy vấnĐặt hàng bởimệnh đề (nếu có) hoặc đặt hàng sắp xếp Điều đó có thể hữu ích cho việc hợp nhất tham gia (xem bên dưới).
Nếu truy vấn yêu cầu tham gia hai hoặc nhiều quan hệ, tỷ lệ kèo bóng đá tối nay Để tham gia quan hệ được xem xét sau tất cả các tỷ lệ kèo bóng đá tối nay khả thi đã được tìm thấy để quét các mối quan hệ đơn lẻ. Ba Các chiến lược tham gia có sẵn là:
Tham gia vòng lồng nhau: Quyền quan hệ được quét một lần cho mỗi hàng được tìm thấy ở bên trái mối quan hệ. Chiến lược này dễ thực hiện nhưng có thể rất tốn thời gian. (Tuy nhiên, nếu mối quan hệ đúng có thể Được quét bằng quét chỉ mục, đây có thể là một chiến lược tốt. Nó có thể sử dụng tỷ lệ kèo bóng đá tối nay giá trị từ hàng hiện tại của bên trái quan hệ như tỷ lệ kèo bóng đá tối nay phím cho việc quét chỉ mục của bên phải.)
Hợp nhất tham gia: Mỗi quan hệ là Sắp xếp trên các thuộc tính tham gia trước khi tham gia bắt đầu. Sau đó Hai mối quan hệ được quét song song và phù hợp Hàng được tỷ lệ kèo bóng đá tối nayt hợp để tạo thành các hàng tham gia. Loại tham gia này là hấp dẫn hơn vì mỗi quan hệ phải được quét Chỉ một lần. Phân loại cần thiết có thể đạt được bằng cách một bước sắp xếp rõ ràng hoặc bằng cách quét mối quan hệ trong Thứ tự thích hợp bằng cách sử dụng một chỉ mục trên khóa nối.
băm tham gia: Mối quan hệ đúng đầu tiên được quét và tải vào bảng băm, sử dụng Tham gia tỷ lệ kèo bóng đá tối nay thuộc tính dưới dạng khóa băm. Tiếp theo mối quan hệ bên trái là được quét và tỷ lệ kèo bóng đá tối nay giá trị thích hợp của mỗi hàng được tìm thấy được sử dụng như tỷ lệ kèo bóng đá tối nay phím băm để xác định vị trí tỷ lệ kèo bóng đá tối nay hàng phù hợp trong bàn.
Khi truy vấn liên quan đến nhiều hơn hai mối quan hệ, trận chung kết Kết quả phải được xây dựng bởi một cây các bước tham gia, mỗi bước có hai đầu vào. Người lập tỷ lệ kèo bóng đá tối nay kiểm tra các chuỗi tham gia khác nhau có thể để tìm cái rẻ nhất.
Nếu truy vấn sử dụng ít hơngeqo_thresholdQuan hệ, tìm kiếm gần như đã được thực hiện để tìm Trình tự tham gia tốt nhất. Người lập tỷ lệ kèo bóng đá tối nay ưu tiên xem xét tham gia giữa hai mối quan hệ mà tồn tại một Tham gia mệnh đề trongWHERETrình độ chuyên môn (tức là, trong đó một hạn chế nhưỞ đâu rel1.attr1 = rel2.ATTR2tồn tại). Tham gia các cặp không có tham gia mệnh đề chỉ được coi là khi không có lựa chọn nào khác, rằng là, một mối quan hệ cụ thể không có sẵn các điều khoản tham gia quan hệ khác. Tất cả các tỷ lệ kèo bóng đá tối nay có thể được tạo cho mỗi lần tham gia cặp được xem xét bởi người lập tỷ lệ kèo bóng đá tối nay, và một trong số (ước tính trở thành) giá rẻ nhất được chọn.
Khigeqo_thresholdbị vượt quá, tỷ lệ kèo bóng đá tối nay chuỗi tham gia được xem xét được xác định bởi heuristic, vì được mô tả trongChương 51. Nếu không thì quá trình là như nhau.
Cây tỷ lệ kèo bóng đá tối nay đã hoàn thành bao gồm quét tuần tự hoặc chỉ mục của các mối quan hệ cơ sở, cộng với vòng lặp, hợp nhất hoặc băm tham gia các nút khi cần, cộng với bất kỳ bước phụ trợ nào cần thiết, chẳng hạn như sắp xếp Các nút hoặc các nút tính toán tổng hợp. Hầu hết trong số này Các loại nút tỷ lệ kèo bóng đá tối nay có khả năng bổ sung để làmLựa chọn(loại bỏ tỷ lệ kèo bóng đá tối nay hàng không đáp ứng điều kiện boolean được chỉ định) vàDự đoán(Tính toán của một cột dẫn xuất Dựa trên các giá trị cột đã cho, nghĩa là đánh giá vô hướng biểu thức khi cần thiết). Một trong những trách nhiệm của Người lập tỷ lệ kèo bóng đá tối nay phải đính kèm các điều kiện lựa chọn từWHEREĐiều khoản và tính toán đầu ra cần thiết Biểu thức đến các nút thích hợp nhất của cây tỷ lệ kèo bóng đá tối nay.