Thực thi câu lệnh ALTER PROCEDURE
cho một thủ tục được lưu trữ có gây ra tất cả các kế hoạch thực hiện được lưu trong bộ nhớ cache cho thủ tục đã lưu trữ đó trở nên không hợp lệ và hết hạn trong SQL Server 2008/2005 không?Việc thay đổi thủ tục lưu trữ có hết hạn các kế hoạch thực hiện được lưu trong bộ nhớ cache không?
Việc thay đổi thủ tục lưu trữ có hết hạn các kế hoạch thực hiện được lưu trong bộ nhớ cache không?
Trả lời
Có.
Bạn có thể xác minh điều này bằng cách làm
SELECT * FROM sys.dm_exec_procedure_stats
where object_id = object_id('YourProc', 'P')
trước và sau.
Từ TechNet
[tình huống trong đó kế hoạch này sẽ được gỡ bỏ từ bộ nhớ cache bao gồm] hoạt động toàn cầu như chạy
DBCC FREEPROCCACHE
để xóa tất cả các kế hoạch từ bộ nhớ cache, cũng như thay đổi cho một quy trình đơn lẻ, chẳng hạn nhưALTER PROCEDURE
, mà sẽ thả tất cả các kế hoạch cho quy trình đó từ bộ nhớ cache.
Trong khi tôi tin rằng bạn (như bạn có một danh tiếng tuyệt vời) là tài liệu này trên MSDN bất cứ nơi nào – Kane
Có nó sẽ được. Sẽ tìm thấy một liên kết. –
http://msdn.microsoft.com/en-us/library/ms181055.aspx –
Có. Tất nhiên điều này rất dễ dàng để kiểm tra bản thân:
- Tạo một thủ tục
- Execute nó một vài lần
- Confirm nó được lưu trữ bởi sys.dm_exec_cached_plans kiểm tra
- Alter thủ tục
- Hàng trong sys.dm_exec_cached_plans đã biến mất
CREATE PROCEDURE dbo.blat AS SELECT 1; GO EXEC dbo.blat; GO 5 SELECT COUNT(*) FROM sys.dm_exec_cached_plans AS p CROSS APPLY sys.dm_exec_sql_text(p.plan_handle) AS s WHERE [sql].[text] LIKE '%dbo.blat%';
ALTER PROCEDURE dbo.blat AS SELECT 22;
GO
SELECT COUNT(*) FROM sys.dm_exec_cached_plans AS p
CROSS APPLY sys.dm_exec_sql_text(p.plan_handle) AS s
WHERE [sql].[text] LIKE '%dbo.blat%';
Nó không - nhưng có thể có các yếu tố khác.
Đôi khi với sự cố nghiêm trọng về hiệu suất, tôi thấy rằng hoạt động rõ ràng DBCC FREEPROCCACHE
có thể cải thiện hiệu suất của hệ thống. Tất nhiên bạn cũng có thể xóa bộ nhớ cache cho một sproc nếu bạn biết nó có vấn đề.
Đây có phải là tình huống trong đó bộ đệm kế hoạch có đầy đủ các truy vấn adhoc sử dụng một lần hay gì đó không? Nếu tối ưu hóa như vậy cho khối lượng công việc adhoc có thể là một lựa chọn. –
Thành thật mà nói tôi đã nhìn thấy điều này một vài lần, đã dành rất nhiều thời gian vào nó lần đầu tiên cố gắng giải quyết - có nhà thầu và mọi thứ. Chúng tôi không bao giờ có đến nguyên nhân tuyến đường chỉ phát hiện ra rằng sau rất nhiều cập nhật cơ sở dữ liệu đôi khi nó là cần thiết để gọi 'DBCC FREEPROCCACHE'. – TheCodeKing
- 1. Thực hiện một thủ tục được lưu trữ trong một thủ tục lưu sẵn
- 2. Giải thích kế hoạch truy vấn trong thủ tục lưu
- 3. Postgres: "L ERI: kế hoạch được lưu trong bộ nhớ cache không được thay đổi loại kết quả"
- 4. Mẫu lưu trữ với các thủ tục được lưu trữ
- 5. Thay đổi trình xóa thủ tục được lưu trữ
- 6. Thủ tục lưu trữ thực hiện một thủ tục lưu sẵn
- 7. Lần cuối cùng Thủ tục lưu trữ được thực hiện
- 8. Hết hạn bộ nhớ cache NHibernate
- 9. thực hiện thủ tục lưu trữ từ một DbContext
- 10. Gọi thủ tục lưu trữ trong một thủ tục được lưu trữ trong MySQL
- 11. Thủ tục lưu trữ không đồng bộ Các cuộc gọi
- 12. UNION có điều kiện trong thủ tục được lưu trữ
- 13. Hết hạn mục được lưu trong bộ nhớ cache qua CacheItemPolicy trong .NET MemoryCache
- 14. Bạn có nên lưu trữ các thủ tục lưu trữ SQL trong Kiểm soát nguồn không?
- 15. Mã khung thực thể có hỗ trợ đầu tiên được lưu trữ thủ tục không?
- 16. Thực hiện thủ tục được lưu trữ đồng bộ trong mysql
- 17. Làm thế nào tôi có thể hiển thị kế hoạch thực hiện cho một thủ tục lưu sẵn?
- 18. yêu cầu lưu trữ bộ nhớ cache?
- 19. Kiểm soát hết hạn bộ nhớ cache
- 20. Không thể tìm thấy thủ tục được lưu trữ, tuy nhiên có thể thực hiện nó
- 21. Di chuyển các thủ tục được lưu trữ bằng Flyway
- 22. Các thủ tục được lưu trữ kỹ thuật đảo ngược
- 23. Máy chủ SQL - Có thể thực hiện một thủ tục được lưu trữ
- 24. Thủ tục lưu trữ và quyền - Có đủ EXECUTE không?
- 25. Các thủ tục được lưu trữ là thời gian không liên tục!
- 26. Thủ tục lưu trữ trong phpMyAdmin
- 27. Bộ nhớ cache đầu ra trang có được lưu trữ trong đối tượng bộ nhớ cache ASP.NET không?
- 28. Cách thực hiện các thủ tục được lưu trữ với Doctrine2 và MySQL
- 29. Danh sách các thủ tục được lưu trữ từ Bảng
- 30. Thủ tục được lưu trữ hoặc mã số
Có, nó sẽ làm –
Nhờ tất cả những người trả lời – Kane