我正在参数化我的网络应用程序的ad hoc sql。因此,我希望查询计划缓存的大小减小并具有更高的命中率。也许甚至其他重要指标也会得到改善。
我可以使用perfmon来跟踪这个吗?如果是这样,我应该使用什么计数器?如果不是perfmon,我怎么能报告这种变化的影响?
答案 0 :(得分:1)
您可以使用SQL Server Profiler。创建新跟踪,并捕获TSQL-> Exec Prepared Sql和TSQL->准备Sql事件。前者会告诉您何时重用查询计划,后者在重新生成计划时。
对于存储过程,您也可以在SP类别的事件下执行相同操作。
答案 1 :(得分:1)
缓存命中率缓存命中与查找之间的比率 缓存对象计数缓存中缓存对象的数量 缓存页面缓存对象使用的8千字节(KB)页数 正在使用的缓存对象正在使用的缓存对象数。
此外,sys.dm_os_memory_clerks和sys.dm_os_memory_cache_counters将提供有关内存分配(一般情况下)和SQL缓存(一般情况下)的信息。您将对计划缓存内存职员的分配感兴趣。
最后还有执行DMV:sys.dm_exec_query_stats和sys.dm_exec_cached_plans。
这些计数器和DMV应涵盖您所需的内容,有关详细信息,请参阅Execution Plan Caching and Reuse。