Phiên bản không được hỗ trợ:6.5
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

Máy lập tỷ lệ kèo bóng đá

Nhiệm vụ củatỷ lệ kèo bóng đálà Tạo một tỷ lệ kèo bóng đá thực hiện tối ưu. Nó trước tiên kết hợp tất cả có thể cách củaquéttham giaCác mối quan hệ xuất hiện trong một truy vấn. Tất cả Các đường dẫn được tạo dẫn đến cùng một kết quả và đó là nhiệm vụ của Trình tỷ lệ kèo bóng đá để ước tính chi phí thực hiện từng đường dẫn và tìm hiểu cái nào là rẻ nhất.

Tạo Các tỷ lệ kèo bóng đá có thể

Người lập tỷ lệ kèo bóng đá quyết định kế hoạch nào nên được tạo dựa trên các loại chỉ số được xác định dựa trên các mối quan hệ xuất hiện trong một truy vấn. Luôn có khả năng thực hiện một Quét tuần tự trên một mối quan hệ, do đó, một kế hoạch chỉ sử dụng tuần tự Quét 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ệ (ví dụ: chỉ mục B-cây) và truy vấn chứa hạn chếMối quan hệ.Attribution hằng số opr. Nếu nhưMối quan hệ.Attributionxảy ra để khớp với Khóa của chỉ mục B-Tree vàOPRIS Bất cứ điều gì ngoại trừ '<' một tỷ lệ kèo bóng đá khác được tạo bằng cách sử dụng cây b chỉ mục để quét mối quan hệ. Nếu có thêm các chỉ số có mặt và các hạn chế trong truy vấn xảy ra để phù hợp với khóa của một chỉ mục tỷ lệ kèo bóng đá tiếp theo sẽ được xem xét.

Sau tất cả các kế hoạch khả thi đã được tìm thấy để quét đơn Quan hệ, kế hoạch tham gia quan hệ được tạo ra. Các Người lập tỷ lệ kèo bóng đá chỉ xem xét kết hợp giữa hai mối quan hệ mà tồn tại một mệnh đề tham gia tương ứng (tức là một hạn chế nhưỞ đâu rel1.attr1 = rel2.ATTR2tồn tại) trong trình độ ở đâu. Tất cả Các kế hoạch có thể được tạo cho mỗi cặp tham gia được xem xét bởi Người lập tỷ lệ kèo bóng đá. Ba chiến lược tham gia có thể là:

  • Tham gia lặp lại: Quyền quan hệ được quét một lần cho mỗi tuple đượ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.

  • Hợp nhất sắp xếp 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 hợp nhất với nhau có tính đến cả hai Quan hệ được đặt hàng trên các thuộc tính tham gia. Loại tham gia này hấp dẫn hơn vì mọi mối quan hệ phải được quét chỉ một lần.

  • băm tham gia: mối quan hệ đúng là Đầu tiên băm trên các thuộc tính tham gia của nó. Tiếp theo mối quan hệ bên trái là được quét và các giá trị thích hợp của mỗi tuple được tìm thấy được sử dụng làm phím băm để xác định vị trí các bộ dữ liệu ở bên phải mối quan hệ.

Cấu trúc dữ liệu của tỷ lệ kèo bóng đá

Ở đây chúng tôi sẽ đưa ra một mô tả nhỏ về các nút xuất hiện trong tỷ lệ kèo bóng đá. Hình \ Ref Plan hiển thị tỷ lệ kèo bóng đá được sản xuất cho truy vấn Trong ví dụ \ ref simple_select.

nút trên cùng của tỷ lệ kèo bóng đá làMergejoinNode có hai người kế thừa, một được gắn vào trườnglefttreevà thứ hai được gắn vào trườngRighttree. Mỗi mã con đại diện Một mối quan hệ của sự tham gia. Như đã đề cập ở trên, tham gia sắp xếp hợp nhất yêu cầu mỗi mối quan hệ phải được sắp xếp. Đó là lý do tại sao chúng tôi tìm thấy mộtSắp xếpnút trong mỗi sơ đồ con. Bổ sung Trình độ chuyên môn được đưa ra trong truy vấn (S.Sno 2) được đẩy xuống càng xa càng tốt và được gắn vàoqpqualTrường của láseqscanNode của Subplan tương ứng.

Danh sách được gắn vào trườngMergeclausescủaMergejoinNode chứa thông tin về sự tham gia thuộc tính. Các giá trị6500065001choVarnoTrường trongvarCác nút xuất hiện trongMergeclausesDanh sách (và cả trongTargetList) có nghĩa là không Các bộ dữ liệu của nút hiện tại nên được xem xét nhưng các bộ dữ của các nút "sâu hơn" tiếp theo (tức là các nút trên cùng của các sơ đồ con) nên được sử dụng thay thế.

Lưu ý rằng mỗiSắp xếpseqscanNode xuất hiện trong Hình \ Ref Plan đã có MộtTargetListnhưng vì không có đủ không gian chỉ dành choMergejoinnút có thể được vẽ.

Một tác vụ khác được thực hiện bởi người lập tỷ lệ kèo bóng đá/trình tối ưu hóa đang sửa chữaID toán tửtrongexpropernút. BẰNG đã đề cập trước đó,PostgresHỗ trợ nhiều loại dữ liệu khác nhau và thậm chí người dùng được xác định Các loại có thể được sử dụng. Để có thể duy trì số lượng lớn của Các chức năng và toán tử, cần phải lưu trữ chúng trong một hệ thống bàn. Mỗi chức năng và toán tử có một ID toán tử duy nhất. Theo các loại thuộc tính được sử dụng trong trình độ chuyên môn, v.v., ID toán tử thích hợp phải đã sử dụng.