Song song thực tiễn tốt nhất


9

Các thực hành tốt nhất với thiết lập song song nói chung là gì? Tôi biết rằng SQL Server mặc định 0sử dụng tất cả các bộ xử lý có sẵn, nhưng trong trường hợp nào bạn muốn thay đổi hành vi mặc định này?

Tôi nhớ đã đọc ở đâu đó (tôi sẽ phải tìm bài viết này) rằng đối với khối lượng công việc OLTP, bạn nên tắt tính song song (đặt maxdop thành 1). Tôi không nghĩ rằng tôi hoàn toàn hiểu lý do tại sao bạn sẽ làm điều này.

Khi nào bạn sẽ giữ maxdop tối đa cho SQL Server (0)? Khi nào bạn sẽ tắt song song (1)? Khi nào bạn sẽ nêu rõ maxdop cho một số bộ xử lý cụ thể?

Điều gì gây ra song song?

Câu trả lời:


11

Bạn thường không muốn vô hiệu hóa song song vì điều đó cũng sẽ vô hiệu hóa nó cho các tác vụ quản trị viên. Đặt cược tốt nhất của bạn là sửa các truy vấn gây ra sự song song thông qua việc thêm hoặc sửa các chỉ mục hoặc thông qua thực hiện đầy đủ các thay đổi lược đồ.


Dựa trên các câu hỏi cập nhật của bạn ...

Một số người sẽ thay đổi MAXDOP thành 1 cho các ứng dụng do nhà cung cấp xây dựng vì họ không thể kiểm soát cơ sở dữ liệu hoặc lược đồ và họ không muốn một truy vấn duy nhất chiếm toàn bộ hệ thống.

Cá nhân tôi luôn giữ MAXDOP ở mức 0 trừ một số trường hợp hiếm gặp.

Tính song song được gây ra bởi một thao tác trong một kế hoạch thực hiện có chi phí thực hiện vượt qua cài đặt được đặt trước (ngưỡng chi phí cho cài đặt song song). Khi điều này xảy ra, SQL Server sẽ thực hiện song song để nó có thể đa luồng yêu cầu nhằm tăng tốc quá trình. Giá trị mặc định cho ngưỡng chi phí cho tính song song là 5. Trong nhiều nền tảng OLTP, bạn sẽ muốn nâng mức đó lên đến 30 hoặc 40 để tính song song chỉ bắt đầu cho các truy vấn thực sự tốn kém.


4

Tôi chưa bao giờ thấy cần phải tắt hoặc sửa đổi bất kỳ cài đặt song song nào trong mọi thời gian với SQL Server (thiên niên kỷ trước, SQL Sever 6.5)

Theo dõi từ câu trả lời của @StanleyJohns ...
Một hệ thống OLTP với các truy vấn ngắn, sắc nét sẽ không bao giờ đạt đến ngưỡng chi phí ( "ngưỡng chi phí cho song song" ) vì vậy không thành vấn đề. Nếu bạn có một số truy vấn song song, thì tại sao bạn lại hạn chế nó dựa trên một cái gì đó chưa được chứng minh

Tôi cũng chưa thấy một hệ thống OLTP thuần túy. Ở cực điểm, có thể có, nhưng hệ thống trung bình cũng đã báo cáo về nó; dù trong ngày hay qua đêm. Các truy vấn này có nhiều khả năng đi song song và hưởng lợi từ nó.

Với rất nhiều lõi CPU có sẵn ngày nay, có thể nói là một trường hợp để thiết lập "mức độ song song tối đa" toàn cầu nếu bạn có thể đo lường và nhận thấy sự khác biệt.

Như tôi đã nói, đề nghị của tôi là không làm gì cả . Tương tự như @mrdenny, nhưng tôi bao gồm "không có thứ gọi là hệ thống OLTP thuần túy"

Nói rằng, có thể có một số dặm đang vô hiệu hóa các lõi siêu phân luồng ở cấp BIOS nhưng đó là một câu hỏi khác ...

Ngoài ra, vui lòng xem


3

Điều gì gây ra sự song song?: Có một thiết lập được gọi là cost threshold for parallelism. Khi vượt quá ngưỡng này thì tính song song được sử dụng (nếu điều kiện tiên quyết được đáp ứng).

Bản chất của một hệ thống OLTP là có một số lượng lớn các giao dịch nhanh và ngắn. Sử dụng song song đôi khi làm tăng thời gian xử lý truy vấn, vì truy vấn sẽ được phân tách để được xử lý song song và sau đó được khâu lại với nhau trước khi được trả về. Do đó, bạn sẽ thấy các đề xuất để đặt maxdop ở mức 1.

Một lợi ích của việc đặt maxdop ở mức 1 là tính song song bị tắt theo mặc định, nhưng bạn có thể kích hoạt nó ở cấp truy vấn bằng cách sử dụng query hints.

Đối với các hệ thống kho dữ liệu hoặc hệ thống OLAP nơi trả về các tập kết quả lớn, có thể có một lợi ích để phân tách truy vấn bằng cách sử dụng song song. Điều này cho phép truy vấn khai thác các lõi có sẵn để cắt giảm thời gian xử lý truy vấn.


2

Tôi đã thấy một truy vấn phức tạp được chia thành nhiều quá trình phải mất hàng giờ để thực thi - bạn thường có thể thấy điều này trong sp_who2 dưới dạng nhiều mục với cùng một spid.

Thay đổi nó thành maxdop 1 và truy vấn được thực hiện trong vòng chưa đầy một phút.

Bài học ở đây là động cơ không phải lúc nào cũng đúng khi nói đến sự song song.


0

Chúng tôi có rất nhiều máy chủ với 4 lõi và một số có 8 lõi. Tôi khuyến nghị với một số lõi như vậy, tính song song (MAXDOP) được đặt thành 1 để tránh chờ CPU (và cả vấn đề hết thời gian chờ) cho người dùng hệ thống OLTP. Đối với OLAP hoặc máy chủ báo cáo, với một số lõi như vậy, tôi khuyên bạn nên đặt MAXDOP thành 2 và đặt Ngưỡng chi phí thành 30 (có thể cao hơn hoặc thấp hơn một chút cho kịch bản của bạn) để chỉ những truy vấn nặng nhất mới sử dụng song song.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.