【发布时间】:2016-04-21 05:46:36
【问题描述】:
为了调查查询计划的使用情况,我试图了解内存中存储了哪种查询计划。
使用这个查询:
SELECT objtype AS 'Cached Object Type',
COUNT(*) AS 'Numberof Plans',
SUM(CAST(size_in_bytes AS BIGINT))/1048576 AS 'Plan Cache SIze (MB)',
AVG(usecounts) AS 'Avg Use Counts'
FROM sys.dm_exec_cached_plans
GROUP BY objtype
ORDER BY objtype
服务器上有 128Gb 的 RAM,大约 20% 是空闲的。 SQL Server 实例不受内存限制。
是的,基本上我有即席查询(未参数化,未存储过程)。 但是为什么 SQL Server 如此频繁地清空查询计划缓存呢?我有什么样的问题?
【问题讨论】:
-
我不太清楚。但我能猜到几件事,就像你们大多数人都在使用 WITH RECOMPILE 或者大多数 proc 是动态的。
-
@KumarHarsh 不。我没有使用 WITH RECOMPILE 也没有使用动态 SQL。
-
您是否设置了“特别优化”设置?
-
@AllanS.Hansen 没有。它设置为
false。
标签: sql-server sql-server-2008