Arithabort Option Affects Stored Procedure Performance

Tôi đã nhận thấy rằng đôi khi tôi sẽ có một thủ tục lưu trữ bắt đầu mất một khoảng thời gian bất thường để hoàn thành. Trong cố gắng để gỡ lỗi này tôi lấy các SQL đang được gọi từ ứng dụng và dán nó vào SQL Server Management Studio chỉ để có nó trở lại trong một giây. Vì vậy, tôi thử lại từ ứng dụng, và phải mất hơn một phút. Sau khi săn bắn và kéo tóc của tôi tại sao điều này sẽ được tôi phát hiện ra rằng kết nối từ ứng dụng có tùy chọn Arithabort tắt và trong SQL Server Management Studio, mặc định tùy chọn Arithabort được bật. Vì vậy, tôi đã đi trước và chạy một Arithabort đặt ra và sau đó chạy thủ tục lưu trữ trong SQL Server Management Studio và chắc chắn nó chạy mãi mãi. Từ những gì tôi có thể nói có tùy chọn này tắt đã gây ra các ưu hoa truy vấn để chọn một số kế hoạch truy vấn khủng khiếp. Tôi biết SQL Server caches kế hoạch truy vấn của các tùy chọn kết nối, nhưng điều này chỉ không có ý nghĩa nhiều với tôi. Sửa chữa tốt nhất tôi đã đưa ra cho điều này là để biên dịch proc với “với biên dịch lại” tùy chọn. Tôi không thực sự thích tùy chọn này vì SQL Server sẽ không bộ nhớ cache kế hoạch truy vấn, nhưng tôi đã không tìm thấy bất kỳ giải pháp khác mà làm việc nhất quán. Bạn có thể làm điều này như vậy.

Tạo thủ tục MyStoredProcedure @MyParameter varchar (10) với Recompile as select 1
Tôi quan tâm đến những gì người khác đã tìm thấy cho một giải pháp cho vấn đề này hoặc bất kỳ cái nhìn sâu sắc khác vào điều này vì nó là khá khó chịu và nếu bạn không chạy vào nó trước khi nó có thể được khá tốn thời gian và gây phiền nhiễu.

Recent Posts

Recent Comments

    Archives

    Categories

    Meta