TL; DR: Cài đặt ban đầu được đề xuất là 50 bạn đọc vẫn là một nơi tốt để bắt đầu. MAXDOP của 1 lõi vật lý trên mỗi nút NUMA là một cài đặt tốt cho máy chủ như của chúng tôi, phục vụ cả khối lượng công việc OLTP và OLAP.
Corrolary: SQL Server thực sự, thực sự giỏi về những gì nó làm.
Lo lắng chính của tôi với cài đặt này là liệu tôi có ngăn cản việc thực thi song song trên một chỉ mục dựa trên cửa hàng cột cho các truy vấn khá ngắn hay không. Liệu cài đặt 50 có gây ra truy vấn phụ 1 giây nào để mất nhiều thời gian hơn không? Vì các chỉ mục của cửa hàng cột có quy mô rất tốt với CPU, nên có thể bỏ qua 'ngưỡng chi phí cho chế độ song song' không?
- H: SQL Server thậm chí có tôn trọng 'ngưỡng chi phí cho sự song song' cho các chỉ mục của nhà kho không?
A: Vâng. Khi được định cấu hình với cài đặt vô lý 30.000, tính song song cho các chỉ mục của cột lưu trữ đã bị vô hiệu hóa một cách hiệu quả cho khối lượng công việc của tôi. Thử một số giá trị khác, vẫn còn tục tĩu (1.500) đã ức chế sự song song đối với khối lượng công việc thường mất khoảng một giây để chạy, nhưng các truy vấn thường chạy trong khoảng 10 giây trở lên thể hiện kế hoạch thực hiện song song.
H: Là cài đặt mặc định là 50, như được chỉ định trong một số danh sách kiểm tra ngoài đó, có phải là giá trị an toàn không gây ức chế song song cho các truy vấn dựa trên cửa hàng cột của tôi không?
- A: Vâng , và bằng một cú sút xa. Ngay cả việc xử lý giá trị lên tới 500 vẫn cho phép xử lý song song cho các truy vấn dựa trên kho lưu trữ đơn giản, ngắn (giây phụ).
Về máy chủ, khối lượng công việc và kết quả của tôi:
- 2x Xeon E2650v2, (2 nút NUMA, 12 lõi vật lý, 24 luồng HT), RAM 384 GB
- MAXDOP được định cấu hình ở mức 6 (6 lõi vật lý trên mỗi nút NUMA)
- Máy chủ SQL 2014 doanh nghiệp CU4
- Kiểm tra chỉ số kho lưu trữ cột 111.000.000 hàng, trong 6 phân vùng (theo năm)
Hai khối lượng công việc được thử nghiệm:
Truy vấn của cột cardinality cao mất 84 giây (trôi qua) ở ngưỡng trên 1500 và khoảng 14 giây (trôi qua) ở ngưỡng dưới số đó. Truy vấn của cột cardinality thấp mất khoảng 250ms (trôi qua) ở ngưỡng 500 trở xuống và 18 giây (trôi qua) ở ngưỡng trên 1500. (Tôi đã không cố gắng đánh giá chính xác điểm mà nó đã chuyển kế hoạch.) , khi tính song song bị ức chế, tổng thời gian CPU cho truy vấn cardinality thấp sẽ tăng lên đáng kể; có lẽ máy chủ dừng sử dụng chế độ hàng loạt cho truy vấn này.
Heh, cuối cùng chạy thử nghiệm dẫn đến nhiều câu hỏi hơn, nhưng đó là tất cả các fodder blog, và vượt ra ngoài phạm vi của câu hỏi này.