SQL Server Nâng cấp 2008 -> 2016/100 đến 130 truy vấn chậm tương thích, CE mới giết chết tôi


7

Được nâng cấp gần đây từ SQL Server 2008 lên 2016, đã chạy ở chế độ tương thích 100 trong 4 tháng, mọi thứ đều ổn thỏa (nhanh). Sau một số lượng thử nghiệm và chạy cố vấn di chuyển, tôi quyết định bật "công tắc" và thay đổi mức độ tương thích thành 130 ...

Điều này đã có tác động bất lợi đối với khá nhiều sprocs / truy vấn, một số trong đó chạy trong vài giây hiện đang mất vài phút. Ngoài ra CPU đã bị lỗi do điều này.

Các truy vấn này được viết tốt, tôi cũng xây dựng lại các chỉ mục và số liệu thống kê hàng đêm ..

So sánh các kế hoạch trông giống nhau, với một vài phần trăm hơi khác nhau, vẫn là kế hoạch tương tự! Tôi nghĩ rằng CE không nhận được hàng tốt.

Ngoài ra, điều kỳ lạ là đôi khi các truy vấn chạy tốt trong 130 vì vậy tôi nghĩ tất cả đều tốt, nhưng đột nhiên nhận được cảnh báo và truy vấn bị mất chỉ bởi 2 hàng khác nhau, sau đó tôi phải thêm lại TÙY CHỌN (QUERYTRACEON 9481) để có được nó lại nhanh lên.

Có điều gì khác tôi có thể kiểm tra / làm để giúp các truy vấn này trở lại thời kỳ huy hoàng trước đây không?

Tôi có nên loại bỏ tất cả các kế hoạch thủ tục lưu trữ từ bộ nhớ cache ???


Là mục tiêu cuối cùng để có chúng nhanh hay có chúng nhanh với khả năng tương thích mới?
Antoine Hernandez

Nhanh chóng với khả năng tương thích mới
davey

Bạn đã cập nhật số liệu thống kê của bạn và xóa bộ nhớ cache của kế hoạch truy vấn?
Ali Razeghi

@AliRazeghi Tôi đã cập nhật số liệu thống kê hàng đêm, tuy nhiên vẫn chưa xóa bộ đệm truy vấn, bạn có nghĩ rằng nó sẽ có ích sau khi đọc câu trả lời của Joe không?
davey

Đó chỉ là việc tôi làm khi tôi nâng cấp lên một động cơ mới, nhưng đôi khi chúng ta không có sự sang trọng đó và nó có thể là quá mức cần thiết. Những điều này từ kinh nghiệm của tôi có thể xảy ra trong nhiều lớp và câu trả lời được cung cấp là tuyệt vời để xem xét. Tôi đã gặp phải các vấn đề với các kế hoạch truy vấn xấu được tạo ra từ việc nâng cấp bài đăng thống kê dữ liệu nên tôi nghĩ rằng tôi sẽ đưa ra một câu hỏi nhanh cho bạn nhưng có vẻ như bạn đang ở trên đó.
Ali Razeghi

Câu trả lời:


11

Microsoft có chiến lược nâng cấp để thay đổi chế độ tương thích trên SQL Server 2016. Trích dẫn bài viết được liên kết:

Quy trình công việc được đề xuất để nâng cấp bộ xử lý truy vấn lên phiên bản mã mới nhất là:

  1. Nâng cấp cơ sở dữ liệu lên SQL Server 2016 mà không thay đổi cấp độ tương thích cơ sở dữ liệu (giữ ở mức trước)

  2. Cho phép lưu trữ truy vấn trên cơ sở dữ liệu. Để biết thêm thông tin về việc bật và sử dụng kho lưu trữ truy vấn, hãy xem Hiệu suất theo dõi bằng cách sử dụng Cửa hàng truy vấn.

  3. Chờ đủ thời gian để thu thập dữ liệu đại diện của khối lượng công việc.

  4. Thay đổi mức độ tương thích của cơ sở dữ liệu thành 130

  5. Sử dụng SQL Server Management Studio, đánh giá xem có hồi quy hiệu suất trên các truy vấn cụ thể sau khi thay đổi mức độ tương thích

  6. Đối với các trường hợp có hồi quy, buộc kế hoạch trước trong kho lưu trữ truy vấn.

  7. Nếu có các gói truy vấn không bắt buộc hoặc nếu hiệu suất vẫn không đủ, hãy xem xét hoàn nguyên mức độ tương thích về cài đặt trước đó và sau đó tham gia Hỗ trợ khách hàng của Microsoft.

Bạn có thể thử một phiên bản đó cho tình huống của bạn. Thay đổi chế độ tương thích trở lại 100, kích hoạt kho lưu trữ truy vấn, trải qua một chu kỳ kinh doanh đầy đủ và có được một đường cơ sở tốt, sau đó thay đổi chế độ tương thích và sử dụng kho lưu trữ truy vấn để phân tích các truy vấn chạy kém và thực hiện thêm hành động đối với chúng.


2

Bạn có thể đang sử dụng một phiên bản khác của Công cụ ước tính Cardinality của SQL Server trong trường hợp mới

Điều này đặc biệt dành cho những người đã nâng cấp lên SQL Server 2014 trở lên.

Sử dụng lệnh này để làm cho nó nhanh hơn ..

ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION = ON
GO  
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.