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 không hoạt động, SQL Server sẽ cố gắng kéo các bảng vào bộ nhớ nhanh nhất có thể và nối giữa chúng trong bộ nhớ. Có thể là, trong trường hợp của bạn, tốt nhất nên 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ư sử dụng OPTION (FORCE ORDER)
điều này buộc trình tối ưu hóa truy vấn sử dụng thứ tự nối mà bạn đã chỉ định. TRONG một số trường hợp, tôi đã thấy OPTION (FORCE PLAN)
giảm thời gian thực hiện truy vấn từ 26 giây xuống còn 1 giây.
Sách Trực tuyến tiếp tục nói rằng các giá trị có thể có cho MAXDOP
là:
0 - Sử dụng số lượng CPU có sẵn thực tế tùy thuộc vào khối lượng công việc hiện tại của hệ thống. Đâ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. Thao tác sẽ được thực hiện tuần tự.
2-64 - Giới hạn số lượng bộ xử lý ở giá trị được chỉ định. Có thể sử dụng ít bộ 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ố lượng CPU khả dụng được chỉ định, thì số lượng CPU khả dụng thực tế sẽ được sử dụng.
Tôi không chắc cách sử dụng MAXDOP
tốt nhất là gì là, tuy nhiên, tôi sẽ đoán và nói rằng nếu bạn có một bảng có 8 phân vùng trên đó, bạn sẽ muốn chỉ định MAXDOP(8)
do các giới hạn của I / O, nhưng tôi có thể đã nhầm.
Đây là một vài liên kết nhanh mà tôi tìm thấy về MAXDOP
:
Sách trực tuyến:Mức độ song song
Hướng dẫn chung để sử dụng để định cấu hình tùy chọn MAXDOP