KB3189813 - Bản cập nhật giới thiệu đối số gợi ý truy vấn USE HINT trong SQL Server 2016

Áp dụng cho
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Express - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Web - duplicate (do not use)

Tóm tắt

Bản cập nhật này giới thiệu một đối số gợi ý truy vấn mới, USE HINT, cho phép bạn điều khiển trình tối ưu hóa truy vấn mà không cần thông tin xác thực nâng cao hoặc không cần phải là thành viên của vai trò máy chủ sysadmin. Cú pháp của gợi ý truy vấn mới này trông như sau:

<query_hint > ::=
{
USE HINT(N'key' [ [, ]...n ])
}

      

Bản cập nhật này cũng giới thiệu các tùy chọn gợi ý sau có thể được sử dụng với đối số USE HINT.

Tùy chọn Cờ theo dõi tương đương Mô tả Áp dụng Cho
ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS Đặc nhiệm TF 9476 Khiến SQL Server tạo kế hoạch truy vấn sử dụng giả định Ngăn chặn Đơn giản thay vì giả định Chứa cơ sở mặc định cho các nối, theo mô hình ước tính lượng tính của trình tối ưu hóa truy vấn của SQL Server 2014 (12.x) hoặc mới hơn.
ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES Đặc nhiệm TF 4137 Khiến SQL Server tạo kế hoạch sử dụng độ chọn lọc tối thiểu khi ước tính vị từ AND cho bộ lọc để giải thích cho tương quan. Tên gợi ý này song song với cờ theo dõi 4137 khi được sử dụng với mô hình ước tính lượng tính của SQL Server 2012 (11.x) và các phiên bản cũ hơn và có hiệu quả tương tự khi cờ theo dõi 9471 được sử dụng với mô hình ước tính lượng tính của SQL Server 2014 (12.x) trở lên.
DISABLE_BATCH_MODE_ADAPTIVE_JOINS Tắt nối thích ứng chế độ lô. bắt đầu từ SQL Server 2017
DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK Tắt thông tin phản hồi cấp bộ nhớ của chế độ lô. bắt đầu từ SQL Server 2017
DISABLE_DEFERRED_COMPILATION_TV Tắt biên dịch bị trì hoãn biến bảng. bắt đầu từ SQL Server 2019
DISABLE_INTERLEAVED_EXECUTION_TVF Tắt thực thi đan xen cho các hàm có giá trị bảng có nhiều câu lệnh. bắt đầu từ SQL Server 2017
DISABLE_OPTIMIZED_NESTED_LOOP TF 2340 Hướng dẫn bộ xử lý truy vấn không sử dụng thao tác sắp xếp (sắp xếp theo lô) để nối vòng lặp lồng nhau được tối ưu hóa khi tạo kế hoạch truy vấn.
DISABLE_OPTIMIZER_ROWGOAL Đặc nhiệm 4138 Khiến SQL Server tạo kế hoạch không sử dụng các sửa đổi mục tiêu hàng với các truy vấn chứa các từ khóa sau:

  • TOP
  • TÙY CHỌN (NHANH N)
  • IN
  • EXISTS
DISABLE_PARAMETER_SNIFFING Đặc nhiệm 4136 Hướng dẫn trình tối ưu hóa truy vấn sử dụng phân phối dữ liệu trung bình trong khi biên dịch truy vấn có một hoặc nhiều tham số. Chỉ lệnh này giúp kế hoạch truy vấn độc lập với giá trị tham số đã được sử dụng lần đầu khi truy vấn được biên dịch. Sử dụng gợi ý này để ghi đè thiết đặt Cấu hình Phạm vi Cơ sở dữ liệu PARAMETER_SNIFFING=OFF.
DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK Tắt phản hồi cấp bộ nhớ của chế độ hàng. bắt đầu từ SQL Server 2019
DISABLE_TSQL_SCALAR_UDF_INLINING Tắt tính năng 内lót UDF vô hướng. bắt đầu từ SQL Server 2019
DISALLOW_BATCH_MODE Tắt thực thi chế độ lô bắt đầu từ SQL Server 2019
ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS Đặc nhiệm 4139 Cho phép tạo tự động các thống kê nhanh (sửa đổi biểu đồ tần suất) cho bất kỳ cột chỉ mục đầu nào cần ước tính lượng tính. Biểu đồ tần suất được sử dụng để ước tính lượng tính sẽ được điều chỉnh tại thời điểm biên dịch truy vấn để tính cho giá trị tối đa hoặc tối thiểu thực tế của cột này.
ENABLE_QUERY_OPTIMIZER_HOTFIXES Lực lượng Đặc nhiệm 4199 Bật hotfix trình tối ưu hóa truy vấn (các thay đổi được phát hành trong Gói Dịch vụ và Cập nhật Tích lũy SQL Server). Sử dụng gợi ý này để ghi đè thiết đặt Cấu hình Phạm vi Cơ sở dữ liệu QUERY_OPTIMIZER_HOTFIXES=ON.
FORCE_DEFAULT_CARDINALITY_ESTIMATION Lực lượng TF 9481 Bắt buộc Trình tối ưu hóa truy vấn sử dụng mô hình Ước tính lượng tính tương ứng với mức tương thích cơ sở dữ liệu hiện tại. Sử dụng gợi ý này để ghi đè thiết đặt Cấu hình Phạm vi Cơ sở dữ liệu LEGACY_CARDINALITY_ESTIMATION=ON.
FORCE_LEGACY_CARDINALITY_ESTIMATION Lực lượng TF 9481 Buộc trình tối ưu hóa truy vấn sử dụng mô hình Ước tính lượng tính của SQL Server 2012 (11.x) và các phiên bản cũ hơn. Sử dụng gợi ý này để ghi đè thiết đặt Cấu hình Phạm vi Cơ sở dữ liệu LEGACY_CARDINALITY_ESTIMATION=ON.
QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n Bắt buộc hành vi trình tối ưu hóa truy vấn ở cấp truy vấn. Hành vi này xảy ra như thể truy vấn được biên dịch với mức tương thích cơ sở dữ liệu n, trong đó n là mức tương thích cơ sở dữ liệu được hỗ trợ. Tham khảo sys.dm_exec_valid_use_hints để biết danh sách các giá trị hiện được hỗ trợ cho n. bắt đầu từ SQL Server 2017 (14.x) CU10

Để biết thêm thông tin, hãy xem mục Gợi ý (Transact-SQL) - Truy vấn.

Xem thêm thông tin

Bản cập nhật này có trong Gói Dịch vụ 1 cho SQL Server 2016.

Giới thiệu về bản dựng SQL Server 2016

Mỗi bản dựng mới cho SQL Server 2016 đều chứa tất cả bản sửa lỗi nóng và bản sửa lỗi bảo mật được tích hợp trong bản dựng trước đó. Chúng tôi khuyên bạn nên cài đặt bản dựng mới nhất cho SQL Server 2016.

Các kịch bản trong đó hành vi của trình tối ưu hóa truy vấn (QO) SQL Server phải được gợi ý là khá phổ biến và theo truyền thống, chúng được giải quyết bằng cách sử dụng một số cờ theo dõi (đã được ghi lại và chưa được lập tài liệu). Tuy nhiên, khi cờ theo dõi được đặt trên toàn cầu, chúng có thể có ảnh hưởng xấu đến các khối lượng công việc khác. Ngoài ra, việc bật chúng trên mỗi phiên là không thực tế với các ứng dụng hiện có và việc kích hoạt chúng trên mỗi truy vấn với OPTION QUERYTRACEON yêu cầu tư cách thành viên trong vai trò máy chủ cố định sysadmin. (Mặc dù bạn có thể giải quyết hiện tượng này bằng cách sử dụng hướng dẫn kế hoạch hoặc thủ tục lưu trữ, thông tin xác thực nâng cao vẫn là bắt buộc.)

Cờ theo dõi được sử dụng để tạm thời đặt các đặc tính máy chủ cụ thể hoặc để tắt một hành vi cụ thể, Chúng có thể khó quản lý và hiểu.

Để biết thêm thông tin về cờ theo dõi, hãy xem chủ đề Cờ Theo dõi (Transact-SQL) trên trang web Mạng lưới Nhà phát triển Microsoft (MSDN).

Tham khảo

Tìm hiểu về thuật ngữ mà Microsoft dùng để mô tả các bản cập nhật phần mềm.