合 SQL Server中的即席查询
Tags: MSSQLSQL Server即席查询
简介
“针对即席工作负荷进行优化” 选项用于提高包含许多一次性临时批处理的工作负荷计划缓存的效率。 如果该选项设置为 1
,则数据库引擎将在首次编译批处理时在计划缓存中存储一个编译的小计划存根,而不是存储完全编译的计划。 这种情况下不会让未重复使用的编译计划填充计划缓存,从而可能有助于缓解内存压力。 但是,启用此选项可能会影响对一次性计划进行故障排除的能力。
编译的计划存根使数据库引擎能够识别此临时批处理以前已经过编译,但只存储了编译计划存根,因此当再次调用(编译或执行)此批处理时,数据库引擎会对此批处理进行编译,从计划缓存中删除编译计划存根并将完全编译的计划添加到计划缓存中。
可以通过查询 sys.dm_exec_cached_plans
目录视图并在 cacheobjtype
列中查找“已编译计划”来查找编译计划存根。 存根具有唯一 plan_handle
。 编译计划存根没有与其关联的执行计划,并且查询计划句柄不会返回 XML 显示计划。
跟踪标志 8032 将缓存限制参数还原为 SQL Server 2005 (9.x) RTM 设置,此设置通常允许更大的缓存。 当频繁重复使用的缓存条目不适合缓存时,以及当“针对即席工作负荷进行优化”选项未能解决与计划缓存相关的问题时,请使用此设置。
警告
如果大缓存使较少的内存可用于其他内存消耗者(如缓冲池),则跟踪标志 8032 可能导致性能较差。
备注
将“针对即席工作负荷进行优化”选项设置为 1
只会影响新计划;已在计划缓存中的计划不受影响。
若要立即影响已缓存的查询计划,需使用 ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE 清除计划缓存,或需重启 SQL Server。