Bre*_*tin 4 sql-server parameterization sql-execution-plan
对于SQL Server中的即席查询,您不会选择在简单参数化上启用强制参数化的原因是什么?
有性能开销吗?如果是这样,它不会被重复使用的查询计划所产生的(可能的)收益所抵消?
您是否分析了计划缓存以查看是否有大量的一次性使用计划?
SELECT usecounts, COUNT(*), SUM(size_in_bytes)
FROM sys.dm_exec_cached_plans
GROUP BY usecounts
ORDER BY usecounts;
Run Code Online (Sandbox Code Playgroud)
您是否考虑过" 针对临时工作负载进行优化 "设置,该设置至少只存储该计划的存根,直到它被多次使用为止?我发现这非常有效.
如果您有大量的临时SQL,并且您看到计划缓存膨胀,那么尝试强制参数化就不会有什么坏处.但是你应该彻底测试你的整个工作负载,因为有些情况下开销会超过收益(特别是如果你大量使用索引视图,持久计算列或分区,你可能会得到更糟糕的计划).重要的是要注意,当您打开此设置时,它也会DBCC FREEPROCCACHE为您运行,因此需要稍微打嗝,以便在下次需要时重新编译所有现有计划.(当然,在你已经'优化了ad hoc'并结合大量的一次性使用计划的情况下,这种影响远远不那么明显,因为你主要是驱逐可能在重新使用之前刷新的存根.)
另请注意,在许多情况下,此设置对单个查询没有影响(请参阅联机丛书主题).
| 归档时间: |
|
| 查看次数: |
1089 次 |
| 最近记录: |