标签:
查看SQLServer已经使用的缓存计划SQL:
SELECT objtype AS ‘Cached Object Type‘, COUNT(*) AS ‘Number Of Plans‘, SUM(CAST(size_in_bytes AS BIGINT))/1024/1024 AS ‘Plan Cache Size (MB)‘, AVG(usecounts) AS ‘Avg Use Count‘ FROM sys.dm_exec_cached_plans GROUP BY objtype
执行结果为:
里面大部分缓存计划是即席缓存计划(Adhoc)占用,有1653Mb,平均使用次数只有72,比较低,然后我们查找一下这些占用缓存中只执行过一遍的即席缓存计划:
SELECT COUNT(*) AS ‘Number Of Plans‘, SUM(CAST(size_in_bytes AS BIGINT))/1024/1024 AS ‘Plan Cache Size (MB)‘ FROM sys.dm_exec_cached_plans WHERE usecounts = 1 AND objtype = ‘
执行结果为:
里面只执行过一遍的即席缓存计划有1461个,占用缓存中338Mb,这228Mb用在不能重复使用的计划上,完全浪费了,可以去掉这些不用的缓存计划来释放缓存空间。
结论:
针对即席缓存工作负荷进行优化的选项能够确保这种情况不会发生,建议所有SQLServer安装时候默认打开这个选项。
选项设置:
打开SQLServer服务器属性->高级->针对即席工作负荷进行优化->True 就可以
标签:
原文地址:http://www.cnblogs.com/fanzf/p/5777419.html