Như Kaboing đã đề cập, MAXDOP(n)
thực sự kiểm soát số lõi CPU đang được sử dụng trong bộ xử lý truy vấn.
Trên một hệ thống hoàn toàn nhàn rỗi, SQL Server sẽ cố gắng kéo các bảng vào bộ nhớ càng nhanh càng tốt và nối giữa chúng trong bộ nhớ. Nó có thể là, trong trường hợp của bạn, tốt nhất là làm điều này với một CPU duy nhất. Điều này có thể có tác dụng tương tự như việc sử dụng OPTION (FORCE ORDER)
buộc trình tối ưu hóa truy vấn sử dụng thứ tự các phép nối mà bạn đã chỉ định. Trong một số trường hợp, tôi đã thấy OPTION (FORCE PLAN)
giảm truy vấn từ 26 giây xuống còn 1 giây thời gian thực hiện.
Books Online tiếp tục nói rằng giá trị có thể cho MAXDOP
là:
0 - Sử dụng con số thực tế của CPU có sẵn tùy thuộc vào khối lượng công việc hệ thống hiện tại. Đây là giá trị mặc định và cài đặt được đề xuất.
1 - Ngăn chặn việc tạo kế hoạch song song. Các hoạt động sẽ được thực hiện serially.
2-64 - Giới hạn số lượng bộ xử lý theo giá trị được chỉ định. Có thể sử dụng ít bộ vi xử lý hơn tùy thuộc vào khối lượng công việc hiện tại. Nếu một giá trị lớn hơn số CPU có sẵn được chỉ định, thì số lượng CPU sẵn có thực tế được sử dụng.
Tôi không chắc chắn những gì sử dụng tốt nhất của MAXDOP
là, tuy nhiên tôi sẽ tham gia một dự đoán và nói rằng nếu bạn có một bảng với 8 phân vùng trên nó, bạn sẽ muốn chỉ định MAXDOP(8)
do I/O những hạn chế, nhưng tôi có thể sai.
Dưới đây là một vài liên kết nhanh tôi thấy về MAXDOP
:
Books Online: Degree of Parallelism
General guidelines to use to configure the MAXDOP option
Nguồn
2008-10-03 15:30:24
Bạn nên bao gồm phiên bản và gói dịch vụ của máy chủ SQL. Điều này có thể đã được sửa trong phiên bản sau ... –