KB974006 - SQL Server Mô hình dịch vụ Cờ Theo dõi Hotfix Trình tối ưu hóa Truy vấn 4199

Áp dụng cho
Microsoft SQL Server 2005 Standard Edition Microsoft SQL Server 2005 Enterprise Edition Microsoft SQL Server 2005 Standard X64 Edition Microsoft SQL Server 2005 Enterprise X64 Edition Microsoft SQL Server 2005 Developer Edition Microsoft SQL Server 2005 Workgroup Edition SQL Server 2008 Standard SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Workgroup SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Standard SQL Server 2008 R2 Workgroup SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Express - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

GIỚI THIỆU

Các phiên bản Microsoft SQL Server sau SQL Server 2000 Gói Dịch vụ 3 (SP3) đã cung cấp hầu hết các hotfix cho trình tối ưu hóa truy vấn ở trạng thái tắt theo mặc định để ngăn các khách hàng sản xuất hiện tại nhìn thấy các thay đổi kế hoạch dự kiến có thể gây giảm hiệu suất. Lúc đầu, mỗi bản hotfix được chuyển phát dưới một cờ theo dõi riêng biệt. Sau đó, cách thực hành này đã được thay đổi để hầu hết các cờ được kết hợp dưới một lá cờ dấu vết duy nhất (4199). Cách thực hành mới này đã được khởi xướng trên nhiều phiên bản, bắt đầu với các bản cập nhật sau đây:

  • SQL Server 2005 Gói Dịch vụ 3 (SP3) Cập nhật Tích lũy 6
  • SQL Server 2008 Gói Dịch vụ 1 (SP1) Gói Cập nhật Tích lũy 7
  • SQL Server 2008 R2 (RTM)

Cờ theo dõi 4199 được sử dụng để thu thập các hotfix được dự định bật theo mặc định trong bản phát hành trong tương lai, trong khi các cờ theo dõi khác được sử dụng cho các tình huống mà bản sửa lỗi không được dự định bật theo mặc định ở dạng hiện tại. Bắt đầu từ SQL Server 2016 RTM, cài đặt COMPATIBILITY_LEVEL cơ sở dữ liệu sẽ được sử dụng để bật các bản sửa lỗi nóng liên quan đến cờ theo dõi 4199 theo mặc định. Bài viết này mô tả cơ chế và chính sách về cách thức phân phối các hotfix ảnh hưởng đến kế hoạch cho SQL Server 2016 và các phiên bản mới hơn.

Xem thêm thông tin

Trong SQL Server 2016, các hotfix cờ theo dõi 4199 được tạo cho các bản phát hành trước đó của SQL Server sẽ được bật trong cơ sở dữ liệu COMPATIBILITY_LEVEL 130 mà không bật cờ theo dõi 4199. Cờ theo dõi 4199 sẽ được sử dụng để phát hành mọi hotfix SQL Server 2016 trong tương lai dành cho cơ sở dữ liệu bằng cách sử dụng mức độ tương thích 130. Vì cờ theo dõi 4199 được khuyến nghị chỉ cho khách hàng đang gặp sự cố về hiệu suất cụ thể, khách hàng được khuyên loại bỏ cờ theo dõi 4199 sau khi họ di chuyển cơ sở dữ liệu của mình lên mức tương thích mới nhất vì cờ theo dõi 4199 sẽ được sử dụng lại cho các bản sửa lỗi trong tương lai mà có thể không áp dụng cho ứng dụng của bạn và có thể gây ra thay đổi hiệu suất kế hoạch ngoài dự kiến trên hệ thống sản xuất. Điều này có nghĩa là các hotfix cờ theo dõi 4199 khác nhau sẽ được bật cho từng mức tương thích được hỗ trợ trong một bản phát hành sản phẩm cụ thể. Mức tương thích mới nhất đã cho phép tất cả các bản sửa lỗi trước đây trong cờ theo dõi 4199. Điều này nghĩa là nâng cấp cơ sở dữ liệu lên mức tương thích mới nhất và loại bỏ cờ theo dõi 4199 vẫn cho phép tất cả bản sửa lỗi mà khối lượng công việc đã tận dụng trước khi nâng cấp cơ sở dữ liệu, chứ không phải bản sửa lỗi mới. Nếu sau đó, khách hàng gặp phải sự cố về hiệu suất truy vấn, hãy thử nghiệm với việc bật tùy chọn phạm vi cơ sở dữ liệu QUERY_OPTIMIZER_HOTFIXES hoặc ENABLE_QUERY_OPTIMIZER_HOTFIXES gợi ý truy vấn trong môi trường thử nghiệm để xác định xem sự cố đã được giải quyết hay chưa. Hãy tham khảo tài liệu về QUERY_OPTIMIZER_HOTFIXES.

Lưu ý Theo mặc định, cơ sở dữ liệu được tạo trong SQL Server 2016 sử dụng mức tương thích 130 và đã bật lô-gic trình tối ưu hóa mới.

Ưu điểm chính của mô hình này là giảm rủi ro cho hệ thống sản xuất trong quá trình nâng cấp. Cách tiếp cận này tách biệt việc cài đặt một phiên bản chính mới của SQL Server với việc bật tự động tất cả các thay đổi mới của bộ xử lý truy vấn. Vì các bản nâng cấp phiên bản chính thay đổi định dạng tệp và không thể quay lại được, bạn nên sử dụng thiết đặt COMPATIBILITY_LEVEL, vì điều này cho phép khách hàng nhanh chóng hạ cấp nếu phát hiện vấn đề về hiệu suất gói ngoài dự kiến trong quá trình nâng cấp. Nếu khách hàng phát hiện thay đổi kế hoạch không mong muốn dẫn đến việc nâng cấp ứng dụng, khách hàng có thể giảm bớt tình huống bằng cách áp dụng gợi ý kế hoạch phù hợp bằng cách sử dụng Kho Truy vấn để bắt buộc kế hoạch trước đó hoặc có thể giảm bớt tình trạng bằng cách liên hệ với bộ phận Hỗ trợ Khách hàng của Microsoft để trợ giúp về sự cố nhằm cung cấp giải pháp thay thế hoặc hotfix. Khi tất cả các sự cố đều được giảm bớt thì quá trình nâng cấp có thể tiếp tục. Khách hàng nên tích hợp chức năng này vào kế hoạch nâng cấp của mình cho SQL Server 2016.

Bảng sau đây giải thích mô hình về cách hoạt động của cờ theo dõi 4199 kể từ SQL Server 2016.

Thiết đặt Mức độ tương thích SQL Cờ theo dõi 4199 Hotfix Trình tối ưu hóa trước SQL Server 2016 RTM Hotfix Trình tối ưu hóa sau SQL Server 2016 RTM
1. 120 Tắt Bị vô hiệu hóa Bị vô hiệu hóa
2. 120 Bật Bật Bị vô hiệu hóa
3. 130 Tắt Được bật theo mức tương thích Bị vô hiệu hóa
4. 130 Bật Được bật theo mức tương thích Được bật theo mức tương thích

Lưu ý: Cài đặt số 3 được khuyến nghị cho khách hàng mới nâng cấp lên SQL Server 2016.

Đối với các bản phát hành chính sau SQL Server 2016, Microsoft dự định tiếp tục sử dụng mô hình dịch vụ này cho hotfix trình tối ưu hóa. Theo mặc định hoặc mỗi bản phát hành, mọi bản hotfix cờ theo dõi 4199 từ bản phát hành trước đó sẽ được bật ở mức tương thích tiếp theo. Điều này có nghĩa là trạng thái được khuyến nghị cho khách hàng sau khi họ di chuyển sang mức tương thích mới nhất sẽ là tắt cờ theo dõi 4199. Các hotfix sau này sẽ sử dụng cờ theo dõi 4199 để bật các bản sửa lỗi cho khách hàng cần phải bật các hotfix cụ thể đó trong một ứng dụng. Khách hàng được khuyên nên tắt cờ theo dõi 4199 sau khi ứng dụng được nâng cấp lên mức tương thích mới nhất để tránh việc bất ngờ bật thay đổi trình tối ưu hóa bất ngờ trong tương lai trên ứng dụng. Việc nâng cấp lên mức tương thích mới nhất và loại bỏ cờ theo dõi 4199 vẫn cho phép tất cả bản sửa lỗi mà một khối lượng công việc đã tận dụng trước khi nâng cấp, chứ không phải các bản sửa lỗi mới.

Lưu ý Trong khi nhiều hotfix trình tối ưu hóa được bật dưới cờ theo dõi 4199, một số lại sử dụng các cờ theo dõi khác. Cờ theo dõi 4199 trước đây đề cập đến các cờ theo dõi được áp dụng rộng rãi và có khả năng được bật theo mặc định trong bản phát hành trong tương lai. Cờ theo dõi thay thế được sử dụng trong các hotfix mà trong đó các điều kiện rất cụ thể với chỉ một số ít khách hàng, trong đó bản sửa lỗi có thể làm giảm hiệu suất trong các loại ứng dụng khác hoặc khi chức năng nội bộ có thể thấy thay đổi trước khi sẵn sàng được bật cho tất cả mọi người. Microsoft sẽ tiếp tục sử dụng các cờ theo dõi khác khi cần thiết để bảo trì sản phẩm.

Lưu ý Bài viết này tập trung vào mô hình phát hành cờ theo dõi 4199 hotfix với mức độ tương thích mới nhất của sản phẩm mới nhất. (Tại thời điểm xuất bản, đây là SQL Server 2016.) Các hotfix Trình tối ưu hóa có thể được phát hành trên các phiên bản SQL Server cũ hơn trong thị trường hoặc ở các mức tương thích thấp hơn (120 trở xuống) của SQL Server 2016. Microsoft sẽ đánh giá từng trường hợp và xác định xem nên sử dụng cờ theo dõi 4199 hay một cờ theo dõi khác. Vì những thay đổi không phải hotfix cũng được bật khi di chuyển được thực hiện lên mức tương thích sau này, không có lời hứa cụ thể rằng sẽ không có thay đổi kế hoạch nào xảy ra trong quá trình nâng cấp (có hoặc không có cờ theo dõi 4199). Khách hàng phải luôn kiểm tra cẩn thận các thay đổi đối với mức tương thích cho các ứng dụng sản xuất và nên sử dụng các công nghệ giảm nhẹ, chẳng hạn như Kho Truy vấn, nếu có vấn đề về hiệu suất liên quan đến lựa chọn gói.

Để tham khảo, cờ theo dõi sau đây đã được sử dụng cho các hotfix bộ xử lý truy vấn trước khi giới thiệu cờ theo dõi 4199:

4101, 4102, 4103, 4104, 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4115, 4116, 4117, 4119, 4120, 4121, 4122, 4124, 4125, 4126, 4127, 4128, 4129, 4131, 4133, 4135.

SQL Server 2012 trở lên

Cờ theo dõi 4199 được tích hợp trong các phiên bản phát hành của SQL Server 2012 và các phiên bản mới hơn.

Cách bật cờ theo dõi 4199

Bạn có thể bật cờ theo dõi 4199 khi khởi động hoặc trong phiên người dùng. Cờ theo dõi này có hiệu ứng ở cấp độ toàn cầu hoặc cấp phiên. Để bật cờ theo dõi 4199, hãy sử dụng lệnh DBCC TRACEON hoặc sử dụng –T 4199 làm tham số khởi động.

Nếu sử dụng DBCC TRACEON\TRACEOFF, thao tác này sẽ không tái tạo kế hoạch lưu trong bộ đệm ẩn mới cho thủ tục lưu trữ. Các kế hoạch có thể nằm trong bộ đệm ẩn đã được tạo mà không có cờ theo dõi.

Để biết thông tin chi tiết về cách bật hoặc tắt cờ theo dõi và giải thích về cờ theo dõi mức toàn cục và phiên, hãy tham khảo các chủ đề sau trong Sách Trực tuyến về SQL Server:

Tham khảo

Để biết thêm thông tin về sơ đồ đặt tên cho các bản cập nhật SQL Server, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:

822499
Giản đồ đặt tên mới dành cho các gói cập nhật phần mềm Microsoft SQL Server
Để biết thêm thông tin về thuật ngữ cập nhật phần mềm, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:

824684
Mô tả thuật ngữ chuẩn được sử dụng để mô tả các bản cập nhật phần mềm của Microsoft