MAXDOP = 1, Gợi ý truy vấn và Ngưỡng chi phí cho tính song song


11

Nếu một cá thể đã MAXDOPđược đặt ở mức 1 và các gợi ý truy vấn được sử dụng để cho phép các truy vấn cụ thể đi song song, thì Ngưỡng chi phí cho giá trị Song song vẫn được SQL sử dụng để quyết định có thực sự đi song song không?

Tôi chưa thể tìm hiểu thông tin cụ thể này mặc dù liên kết này cho thấy CTFP bị bỏ qua nếu MAXDOPlà 1. Điều này có ý nghĩa nếu không có gợi ý truy vấn là không có yêu cầu, bất kể chi phí, sẽ đi song song khi MAXDOPlà 1.

Bất cứ ai có thể cho tôi biết hành vi dự kiến ​​của hai yêu cầu này sẽ là gì?

Ví dụ 1:

Instance Maxdop: 1 
CTFP: 50 
Query hint: Maxdop=2 
Query cost: 30

Ví dụ 2:

Instance Maxdop: 1
CTFP: 50
Query hint: Maxdop=2
Query cost: 70

Câu trả lời:


20

Nếu một cá thể đã MAXDOPđược đặt ở mức 1 và các gợi ý truy vấn được sử dụng để cho phép các truy vấn cụ thể đi song song, thì Ngưỡng chi phí cho giá trị Song song vẫn được SQL sử dụng để quyết định có thực sự đi song song không?

Câu trả lời đơn giản: .

Chi tiết

Có một vài điều riêng biệt đang diễn ra ở đây, điều quan trọng là phải tách ra:

  1. Là gì hiệu quả mức độ tối đa song song có sẵn để truy vấn?

    Những người đóng góp cho điều này là (theo thứ tự quan trọng):

    • MAX_DOPCài đặt thống đốc tài nguyên
    • MAXDOPThiết lập gợi ý truy vấn
    • Các max degree of parallelismtùy chọn cấu hình ví dụ

    Các chi tiết được giải thích trong cài đặt Mức độ song song tối đa của Server Server, MAX_DOP của Resource Governor và gợi ý truy vấn MAXDOP mật mà SQL Server nên sử dụng? bởi Jack Li, Kỹ sư nâng cao cho Dịch vụ và Hỗ trợ Khách hàng của Microsoft SQL Server. Bảng dưới đây được sao chép từ liên kết đó:

    bảng song song

  2. Một kế hoạch truy vấn sẽ sử dụng song song?

    Trình tối ưu hóa truy vấn SQL Server luôn tìm thấy một kế hoạch nối tiếp trước tiên *.

    Sau đó nếu:

    • Tối ưu hóa hơn nữa là hợp lý;
    • Chi phí của gói nối tiếp tốt nhất vượt quá cost threshold for parallelismgiá trị cấu hình


    ... Trình tối ưu hóa sẽ cố gắng tìm một kế hoạch song song.

    Sau đó nếu:

    • Một kế hoạch song song được tìm thấy (tức là có thể);
    • Chi phí của kế hoạch song song ít hơn kế hoạch nối tiếp tốt nhất


    ... Một kế hoạch song song sẽ được sản xuất.

Lưu ý: các cost threshold for parallelismchỉ ảnh hưởng đến việc hình tối ưu cho một kế hoạch song song. Khi một kế hoạch song song được lưu trữ, nó sẽ thực thi bằng cách sử dụng song song khi nó được sử dụng lại (miễn là có sẵn các luồng) bất kể cài đặt CTFP.


Ví dụ

Đối với cả hai ví dụ, với ví dụ maxdop 1 và gợi ý truy vấn maxdop 2, DOP có hiệu lực là 2. Nếu một kế hoạch song song được chọn, nó sẽ sử dụng DOP 2.

ví dụ 1

Với CTFP là 50 và gói có giá trị nối tiếp rẻ nhất là 30, SQL Server sẽ không cố gắng tìm một gói song song. Một kế hoạch nối tiếp sẽ được sản xuất.

Ví dụ 2

Với CTFP là 50 và gói có giá trị nối tiếp rẻ nhất là 70, SQL Server sẽ cố gắng tìm một gói song song. Nếu kế hoạch này (nếu tìm thấy) có chi phí dưới 70 (chi phí kế hoạch nối tiếp) thì kế hoạch song song sẽ được tạo ra.


Kết quả cuối cùng của tối ưu hóa truy vấn luôn là một gói được lưu trong bộ nhớ cache: nối tiếp hoặc song song. Trình tối ưu hóa chỉ tìm thấy một kế hoạch nối tiếp trong các giai đoạn search0 (TP) và search1 (QP).

Sau đó, nó có thể (như được mô tả) chạy lại search1 với yêu cầu tạo ra một kế hoạch song song. Một lựa chọn sau đó được đưa ra giữa nối tiếp và song song dựa trên toàn bộ chi phí kế hoạch tốt nhất cho đến nay. Lựa chọn đó là ràng buộc trong trường hợp tối ưu hóa chuyển sang search2 (Tối ưu hóa hoàn toàn). Mỗi giai đoạn tối ưu hóa xem xét nhiều lựa chọn thay thế, nhưng đầu ra từ một giai đoạn luôn là một kế hoạch tốt nhất duy nhất, là nối tiếp hoặc song song.

Tôi đã viết về một số điều này trong Huyền thoại: Máy chủ SQL lưu trữ một kế hoạch nối tiếp với mọi kế hoạch song song


2

Ví dụ 1 Trường hợp Maxdop: 1 CTFP: 50 Gợi ý truy vấn: Maxdop = 2 Chi phí truy vấn: 30

Gợi ý truy vấn MAXDOP ghi đè mức độ tối đa của trường hợp cài đặt song song rộng nhưng vì CTPF là 50 và chi phí truy vấn là 30 nên có thể đi theo kế hoạch nối tiếp.

Ví dụ 2 Trường hợp Maxdop: 1 CTFP: 50 Gợi ý truy vấn: Maxdop = 2 Chi phí truy vấn: 70

Ở đây một lần nữa mức độ song song tối đa sẽ được lấy là 2 vì gợi ý MAXDOP là có nhưng CTFP sẽ được lấy là 50 và truy vấn, nếu có thể như Paul đã đề cập có thể chạy song song.

Nếu một cá thể có MAXDOP được đặt ở 1 và các gợi ý truy vấn được sử dụng để cho phép các truy vấn cụ thể đi song song, thì giá trị Ngưỡng chi phí cho Song song vẫn được SQL sử dụng để quyết định có thực sự đi song song không?

Gợi ý MAXDOP sẽ ghi đè cài đặt rộng của thể hiện mức độ song song tối đa.

Trích dẫn từ MAXDOP gợi ý docs.microsoft

Số MAXDOP Áp dụng cho: SQL Server 2008 đến SQL Server 2017.

Ghi đè mức độ tối đa của tùy chọn cấu hình song song của sp_cool và Quản trị tài nguyên cho truy vấn chỉ định tùy chọn này. Gợi ý truy vấn MAXDOP có thể vượt quá giá trị được định cấu hình với sp_cool. Nếu MAXDOP vượt quá giá trị được cấu hình với Resource Governor, Công cụ cơ sở dữ liệu sử dụng giá trị MAXDOP của Governor Governor,

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.