Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6

15.3. Kế hoạch kèo bóng đá pháp

Vì mỗi công nhân thực hiện phần kèo bóng đá pháp của kế hoạch hoàn thành, không thể chỉ cần thực hiện một kế hoạch truy vấn thông thường và chạy nó bằng nhiều công nhân. Mỗi công nhân sẽ tạo ra một bản sao đầy đủ của tập kết quả đầu ra, vì vậy truy vấn sẽ không chạy nhanh hơn bình thường nhưng sẽ tạo ra kết quả không chính xác. Thay vào đó, phần kèo bóng đá pháp của kế hoạch phải là những gì được biết đến bên trong Trình tối ưu hóa truy vấn làkèo bóng đá pháp một phần; Đó là, nó phải được xây dựng để mỗi quá trình thực hiện kế hoạch sẽ chỉ tạo ra một tập hợp con của các hàng đầu ra theo cách mà mỗi hàng đầu ra bắt buộc được đảm bảo được tạo bởi chính xác một trong các quy trình hợp tác. Nói chung, điều này có nghĩa là việc quét trên bảng lái của truy vấn phải là quét nhận biết kèo bóng đá pháp.

15.3.1. Quét kèo bóng đá pháp

Các loại quét bảng kèo bóng đá pháp sau đây hiện đang được hỗ trợ.

  • trong AQuét tuần tự kèo bóng đá pháp, các khối của bảng sẽ được chia thành các phạm vi và được chia sẻ giữa các quy trình hợp tác. Mỗi quy trình của công nhân sẽ hoàn thành việc quét phạm vi khối đã cho trước khi yêu cầu một phạm vi bổ sung của các khối.

  • trong AQuét heap bitmap kèo bóng đá pháp, một quy trình được chọn làm người lãnh đạo. Quá trình đó thực hiện quét một hoặc nhiều chỉ mục và xây dựng bitmap cho biết các khối bảng nào cần được truy cập. Các khối này sau đó được chia cho các quá trình hợp tác như trong quét tuần tự kèo bóng đá pháp. Nói cách khác, quét heap được thực hiện kèo bóng đá pháp, nhưng việc quét chỉ mục cơ bản thì không.

  • trong AQuét chỉ mục kèo bóng đá pháphoặcQuét chỉ có chỉ mục kèo bóng đá pháp, Các quy trình hợp tác thay phiên nhau đọc dữ liệu từ chỉ mục. Hiện tại, quét chỉ mục kèo bóng đá pháp chỉ được hỗ trợ cho các chỉ mục Btree. Mỗi quy trình sẽ yêu cầu một khối chỉ mục và sẽ quét và trả lại tất cả các bộ dữ liệu được tham chiếu bởi khối đó; Các quy trình khác có thể đồng thời trả lại các bộ dữ liệu từ một khối chỉ mục khác. Kết quả quét Btree kèo bóng đá pháp được trả về theo thứ tự được sắp xếp trong mỗi quy trình công nhân.

Các loại quét khác, chẳng hạn như quét các chỉ mục không Btree, có thể hỗ trợ các lần quét kèo bóng đá pháp trong tương lai.

15.3.2. Tham gia kèo bóng đá pháp

Giống như trong một kế hoạch không kèo bóng đá pháp, bảng lái có thể được nối với một hoặc nhiều bảng khác bằng cách sử dụng vòng lặp lồng nhau, nối băm hoặc nối nối. Mặt bên trong của tham gia có thể là bất kỳ loại kế hoạch kèo bóng đá pháp nào được hỗ trợ bởi người lập kế hoạch với điều kiện là an toàn khi chạy trong một công nhân kèo bóng đá pháp. Tùy thuộc vào loại tham gia, phía bên trong cũng có thể là một kế hoạch kèo bóng đá pháp.

  • trong A12084_1210212112_12362

  • trong AHợp nhất tham gia, phía bên trong luôn là một kế hoạch không kèo bóng đá pháp và do đó được thực hiện đầy đủ. Điều này có thể không hiệu quả, đặc biệt là nếu phải thực hiện một loại, bởi vì công việc và dữ liệu kết quả được nhân đôi trong mọi quy trình hợp tác.

  • trong Abăm tham gia(Không có tiền tố "kèo bóng đá pháp"), phía bên trong được thực hiện đầy đủ bởi mọi quy trình hợp tác để xây dựng các bản sao giống hệt của bảng băm. Điều này có thể không hiệu quả nếu bảng băm lớn hoặc kế hoạch đắt tiền. Trong aHash kèo bóng đá pháp tham gia, phía bên trong làHash kèo bóng đá phápChia công việc xây dựng bảng băm chung trên các quy trình hợp tác.

15.3.3. Tập hợp kèo bóng đá pháp

PostgreSQLHỗ trợ tập hợp kèo bóng đá pháp bằng cách tổng hợp theo hai giai đoạn. Đầu tiên, mỗi quá trình tham gia vào phần kèo bóng đá pháp của truy vấn thực hiện bước tổng hợp, tạo ra kết quả một phần cho mỗi nhóm mà quá trình đó nhận thức được. Điều này được phản ánh trong kế hoạch làTổng hợp một phầnNode. Thứ hai, kết quả một phần được chuyển cho người lãnh đạo thông quaTập hợphoặcTập hợp hợp nhất. Cuối cùng, nhà lãnh đạo tổng hợp lại kết quả trên tất cả các công nhân để tạo ra kết quả cuối cùng. Điều này được phản ánh trong kèo bóng đá pháp làHoàn thiện tổng hợpNode.

Hoàn thiện tổng hợpNode chạy trên quy trình lãnh đạo, các truy vấn tạo ra một số lượng lớn các nhóm so với số lượng hàng đầu vào sẽ xuất hiện ít thuận lợi hơn cho trình lập kèo bóng đá pháp truy vấn. Ví dụ: trong trường hợp xấu nhất, số lượng nhóm được nhìn thấy bởiHoàn thiện tổng hợpNode có thể nhiều như số lượng hàng đầu vào được nhìn thấy bởi tất cả các quy trình công nhân trongTổng hợp một phầnGiai đoạn. Đối với những trường hợp như vậy, rõ ràng sẽ không có lợi ích hiệu suất khi sử dụng tập hợp kèo bóng đá pháp. Người lập kế hoạch truy vấn tính đến điều này trong quá trình lập kế hoạch và không có khả năng chọn tổng hợp kèo bóng đá pháp trong kịch bản này.

Tập hợp kèo bóng đá pháp không được hỗ trợ trong mọi tình huống. Mỗi tập hợp phải làan toàncho kèo bóng đá pháp và phải có chức năng kết hợp. Nếu tổng hợp có trạng thái chuyển tiếp loạiNội bộ, nó phải có chức năng tuần tự hóa và giải phóng hóa. Nhìn thấyTạo tổng hợpĐể biết thêm chi tiết. Tập hợp kèo bóng đá pháp không được hỗ trợ nếu bất kỳ cuộc gọi hàm tổng hợp nào chứakhác biệthoặcĐặt hàng bởimệnh đề và cũng không được hỗ trợ cho các tập hợp được đặt theo thứ tự hoặc khi truy vấn liên quan đếnBộ nhóm15792_15903

15.3.4. Tùy chẽ kèo bóng đá pháp

Bất cứ khi nàoPostgreSQLCần kết hợp các hàng từ nhiều nguồn thành một tập kết quả duy nhất, nó sử dụngPhụ lụchoặcMergeAppendkèo bóng đá pháp nút. Điều này thường xảy ra khi thực hiệnLiên minh tất cả16423_16600Phụ lục kèo bóng đá phápNode.

Khi mộtPhụ lụcNode được sử dụng trong kế hoạch kèo bóng đá pháp, mỗi quy trình sẽ thực hiện các kế hoạch con theo thứ tự chúng xuất hiện, để tất cả các quy trình tham gia hợp tác để thực hiện kế hoạch trẻ thứ nhất cho đến khi hoàn thành và sau đó chuyển sang kế hoạch thứ hai cùng một lúc. Khi APhụ lục kèo bóng đá phápđược sử dụng thay thế, thay vào đó, người thực thi sẽ trải rộng các quy trình tham gia càng đồng đều càng tốt trên các kèo bóng đá pháp của con, để nhiều kèo bóng đá pháp con được thực hiện đồng thời. Điều này tránh được sự tranh chấp và cũng tránh phải trả chi phí khởi nghiệp của một kèo bóng đá pháp trẻ em trong các quy trình không bao giờ thực hiện nó.

Ngoài ra, không giống như một thông thườngPhụ lụcNode, chỉ có thể có trẻ em một phần khi được sử dụng trong gói kèo bóng đá pháp, APhụ lục kèo bóng đá phápNode có thể có cả kế hoạch trẻ em một phần và phi cộng sự. Trẻ em không cộng tác sẽ được quét chỉ bằng một quy trình duy nhất, vì việc quét chúng nhiều lần sẽ tạo ra kết quả trùng lặp. Do đó, các kế hoạch liên quan đến việc nối thêm nhiều bộ kết quả có thể đạt được sự kèo bóng đá pháp hạt thô ngay cả khi không có kế hoạch một phần hiệu quả. Ví dụ, hãy xem xét một truy vấn đối với bảng được phân vùng chỉ có thể được triển khai hiệu quả bằng cách sử dụng một chỉ mục không hỗ trợ quét kèo bóng đá pháp. Người lập kế hoạch có thể chọn mộtPhụ lục kèo bóng đá phápcủa thông thườngSCAN INDEXkèo bóng đá pháp; Mỗi lần quét chỉ mục riêng lẻ sẽ phải được thực hiện để hoàn thành bởi một quy trình duy nhất, nhưng các lần quét khác nhau có thể được thực hiện cùng một lúc bởi các quy trình khác nhau.

enable_parallel_appendcó thể được sử dụng để vô hiệu hóa tính năng này.

15.3.5. Mẹo kế hoạch kèo bóng đá pháp

Nếu một truy vấn dự kiến ​​sẽ làm như vậy không tạo ra một kế hoạch kèo bóng đá pháp, bạn có thể thử giảmkèo bóng đá pháp song_setup_costhoặckèo bóng đá pháp song_tuple_cost18981_19344Phần 15.2Phần 15.4Để biết thông tin về lý do tại sao điều này có thể là trường hợp.

Khi thực hiện một kế hoạch kèo bóng đá pháp, bạn có thể sử dụngGiải thích (Phân tích, Verbose)19736_19974

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.