Hướng dẫn aggregate performance mongodb - hiệu suất tổng hợp mongodb
Trên trang này
Các hoạt động đường ống tổng hợp có giai đoạn tối ưu hóa cố gắng định hình lại đường ống để cải thiện hiệu suất. Để xem trình tối ưu hóa biến đổi một đường ống tổng hợp cụ thể, bao gồm tùy chọn 8 trong phương thức 9.Tối ưu hóa có thể thay đổi giữa các bản phát hành. Ngoài việc tìm hiểu về các tối ưu hóa đường ống tổng hợp được thực hiện trong giai đoạn tối ưu hóa, bạn cũng sẽ thấy cách cải thiện hiệu suất đường ống tổng hợp bằng cách sử dụng các chỉ mục và bộ lọc tài liệu. Xem cải thiện hiệu suất với các chỉ mục và bộ lọc tài liệu.Improve Performance with Indexes and Document Filters. Đường ống tổng hợp có thể xác định xem nó chỉ yêu cầu một tập hợp con của các trường trong các tài liệu để có được kết quả. Nếu vậy, đường ống sẽ chỉ sử dụng các trường cần thiết đó, giảm lượng dữ liệu đi qua đường ống. Đối với một đường ống tổng hợp chứa giai đoạn chiếu ( 0 hoặc 1 hoặc 2 hoặc 3) sau đó là giai đoạn 4, MongoDB di chuyển bất kỳ bộ lọc nào trong giai đoạn 4 không yêu cầu các giá trị được tính .Nếu một đường ống tổng hợp chứa nhiều giai đoạn chiếu và/hoặc 4, MongoDB thực hiện tối ưu hóa này cho mỗi giai đoạn 4, việc di chuyển mỗi bộ lọc 4 trước tất cả các giai đoạn chiếu mà bộ lọc không phụ thuộc vào.Xem xét một đường ống của các giai đoạn sau:
Trình tối ưu hóa chia giai đoạn 4 thành bốn bộ lọc riêng lẻ, một cho mỗi khóa trong tài liệu truy vấn 4. Trình tối ưu hóa sau đó di chuyển từng bộ lọc trước càng nhiều giai đoạn chiếu càng tốt, tạo ra các giai đoạn 4 mới khi cần thiết. Đưa ra ví dụ này, trình tối ưu hóa tạo ra đường ống được tối ưu hóa sau:
Bộ lọc 4 4 phụ thuộc vào giai đoạn 0 để tính toán trường 6. Giai đoạn 0 là giai đoạn chiếu cuối cùng trong đường ống này, do đó, bộ lọc 4 trên 6 không thể được di chuyển.Các trường 0 và 1 được tính toán trong giai đoạn 2 nhưng không có sự phụ thuộc vào giai đoạn 0. Trình tối ưu hóa đã tạo ra một giai đoạn 4 mới cho các bộ lọc trên các trường này và đặt nó trước giai đoạn 0.Bộ lọc 4 7 không sử dụng bất kỳ giá trị nào được tính toán trong các giai đoạn 0 hoặc 2 để nó được chuyển sang giai đoạn ____24 mới trước cả hai giai đoạn chiếu.Ghi chúSau khi tối ưu hóa, bộ lọc 7 đang ở giai đoạn 4 khi bắt đầu đường ống. Điều này có thêm lợi ích là cho phép tập hợp sử dụng chỉ mục trên trường 3 khi ban đầu truy vấn bộ sưu tập. Xem cải thiện hiệu suất với các chỉ mục và bộ lọc tài liệu để biết thêm thông tin.Improve Performance with Indexes and Document Filters for more information.Khi bạn có một chuỗi với 4, sau đó là 4, 4 di chuyển trước 4 để giảm thiểu số lượng đối tượng để sắp xếp. Ví dụ: nếu đường ống bao gồm các giai đoạn sau:
Trong giai đoạn tối ưu hóa, trình tối ưu hóa chuyển đổi trình tự thành phần sau:
Khi có thể, khi đường ống có giai đoạn 8 ngay sau đó là giai đoạn 4, tổng hợp đôi khi có thể thêm một phần của giai đoạn 4 trước giai đoạn 8. Nếu giai đoạn 4 được thêm vào khi bắt đầu đường ống, tập hợp có thể sử dụng một chỉ mục cũng như truy vấn bộ sưu tập để giới hạn số lượng tài liệu đi vào đường ống. Xem cải thiện hiệu suất với các chỉ mục và bộ lọc tài liệu để biết thêm thông tin.Improve Performance with Indexes and Document
Filters for more information.Ví dụ: nếu đường ống bao gồm các giai đoạn sau:
Trình tối ưu hóa có thể thêm cùng giai đoạn 4 trước giai đoạn 8:
Khi bạn có một chuỗi với 0 hoặc 1 sau đó là 7, 7 di chuyển trước 0. Ví dụ: nếu đường ống bao gồm các giai đoạn sau:
Trong giai đoạn tối ưu hóa, trình tối ưu hóa chuyển đổi trình tự thành phần sau:
Khi có thể, khi đường ống có giai đoạn 8 ngay sau đó là giai đoạn 4, tổng hợp đôi khi có thể thêm một phần của giai đoạn 4 trước giai đoạn 8. Nếu giai đoạn 4 được thêm vào khi bắt đầu đường ống, tập hợp có thể sử dụng một chỉ mục cũng như truy vấn bộ sưu tập để giới hạn số lượng tài liệu đi vào đường ống. Xem cải thiện hiệu suất với các chỉ mục và bộ lọc tài liệu để biết thêm thông tin.Ví dụ: nếu đường ống bao gồm các giai đoạn sau: Trình tối ưu hóa có thể thêm cùng giai đoạn 4 trước giai đoạn 8:Ví dụ: nếu đường ống bao gồm các giai đoạn sau:
Trong giai đoạn tối ưu hóa, trình tối ưu hóa kết hợp trình tự sau:
Điều này cho phép hoạt động sắp xếp chỉ duy trì kết quả 0 hàng đầu khi nó tiến triển, trong đó 0 là giới hạn được chỉ định và MongoDB chỉ cần lưu trữ các mục 0 trong bộ nhớ [1]. Xem toán tử và bộ nhớ 4 để biết thêm thông tin.Ghi chúTối ưu hóa trình tự với $ bỏ quaKhi một 1 ngay lập tức theo một 1 khác, hai giai đoạn có thể hợp nhất thành một 1 trong đó số lượng giới hạn nhỏ hơn trong hai lượng giới hạn ban đầu. Ví dụ: một đường ống chứa chuỗi sau: 0Sau đó, giai đoạn 1 thứ hai có thể hợp nhất vào giai đoạn 1 đầu tiên và dẫn đến một giai đoạn 1 duy nhất trong đó số lượng giới hạn 0 là tối thiểu của hai giới hạn ban đầu 1 và 0.Khi một 7 ngay lập tức theo một 7 khác, hai giai đoạn có thể hợp nhất thành một 7 trong đó số lượng bỏ qua là tổng của hai lượng bỏ qua ban đầu. Ví dụ: một đường ống chứa chuỗi sau: 1Sau đó, giai đoạn 7 thứ hai có thể hợp nhất vào giai đoạn 7 đầu tiên và dẫn đến một giai đoạn 7 duy nhất trong đó số lượng bỏ qua 9 là tổng của hai giới hạn ban đầu 00 và 01.Khi một 4 ngay lập tức theo một 4 khác, hai giai đoạn có thể hợp nhất thành một 4 kết hợp các điều kiện với 05. Ví dụ: một đường ống chứa chuỗi sau: 2Sau đó, giai đoạn 4 thứ hai có thể hợp nhất vào giai đoạn 4 đầu tiên và dẫn đến một giai đoạn 4 duy nhất 3Khi 4 ngay lập tức theo một 10 khác và 4 hoạt động trên trường 12 của 10, trình tối ưu hóa có thể hợp lại 4 vào giai đoạn 10. Điều này tránh tạo ra các tài liệu trung gian lớn.Ví dụ: một đường ống chứa chuỗi sau: 4Trình tối ưu hóa có thể hợp nhất giai đoạn 4 vào giai đoạn 10. Nếu bạn chạy tập hợp với tùy chọn 8, sản lượng 8 cho thấy giai đoạn kết hợp: 5MongoDB có thể sử dụng công cụ thực thi truy vấn dựa trên khe để thực hiện các giai đoạn đường ống nhất định khi đáp ứng các điều kiện cụ thể. Trong hầu hết các trường hợp, động cơ dựa trên khe cung cấp hiệu suất được cải thiện và chi phí CPU và bộ nhớ thấp hơn so với công cụ truy vấn cổ điển. Để xác minh rằng động cơ dựa trên khe được sử dụng, hãy chạy tập hợp với tùy chọn 8. Tùy chọn này đưa ra thông tin về kế hoạch truy vấn của tổng hợp. Để biết thêm thông tin về việc sử dụng 8 với các tập hợp, hãy xem thông tin trả lại về hoạt động đường ống tổng hợp.Các phần sau mô tả:
Mới trong phiên bản 5.2. Bắt đầu từ phiên bản 5.2, MongoDB sử dụng công cụ truy vấn thực thi dựa trên khe để thực thi các giai đoạn 5 nếu một trong hai:
Khi công cụ thực thi truy vấn dựa trên khe được sử dụng cho 5, kết quả giải thích bao gồm:
Mới trong phiên bản 6.0. Bắt đầu từ phiên bản 6.0, MongoDB có thể sử dụng công cụ truy vấn thực thi dựa trên khe để thực hiện các giai đoạn 10 nếu tất cả các giai đoạn trước trong đường ống cũng có thể được thực hiện bởi động cơ dựa trên khe và không có điều kiện nào sau đây là đúng:
Khi công cụ thực thi truy vấn dựa trên khe được sử dụng cho 10, kết quả giải thích bao gồm:
Các phần sau đây cho thấy cách bạn có thể cải thiện hiệu suất tổng hợp bằng cách sử dụng các chỉ mục và bộ lọc tài liệu. Truy vấn Planner phân tích một đường ống tổng hợp để xác định xem các chỉ mục có thể được sử dụng để cải thiện hiệu suất đường ống hay không. Danh sách sau đây cho thấy một số giai đoạn đường ống có thể sử dụng các chỉ mục: 4 Giai đoạn ____24 có thể sử dụng một chỉ số để lọc các tài liệu nếu 4 là giai đoạn đầu tiên trong đường ống. 5 có khả năng sử dụng chỉ mục để tìm tài liệu đầu tiên trong mỗi nhóm nếu:
Xem 5 Tối ưu hóa hiệu suất cho một ví dụ. 75 Giai đoạn ____175 có thể sử dụng chỉ số không gian địa lý. 75 phải là giai đoạn đầu tiên trong một đường ống tổng hợp.Bắt đầu từ MongoDB 4.2, trong một số trường hợp, một đường ống tổng hợp có thể sử dụng gói chỉ mục 78 trả về một tài liệu trên mỗi giá trị khóa chỉ số.Ghi chú 78 thực hiện nhanh hơn 80 nếu có nhiều tài liệu trên mỗi giá trị chỉ số tồn tại. Tuy nhiên, các tham số quét chỉ số có thể ảnh hưởng đến thời gian so sánh thời gian của 78 và 80.Các chỉ mục có thể bao gồm các truy vấn trong một đường ống tổng hợp. Một truy vấn được bảo hiểm sử dụng một chỉ mục để trả về tất cả các tài liệu và có hiệu suất cao. Nếu hoạt động tổng hợp của bạn chỉ yêu cầu một tập hợp con của các tài liệu trong bộ sưu tập, hãy lọc các tài liệu trước:
Một đường ống chứa một chuỗi 4 theo sau là 7 sau đó là 1 6Trình tối ưu hóa thực hiện sự kết hợp 4 + 1 để biến đổi trình tự thành phần sau: 4 + 1 Coalescence to transforms the sequence
to the following: 7MongoDB tăng số lượng 1 với việc sắp xếp lại.MẹoXem thêm: |