Sql server SQL Server 2008计划缓存几乎总是空的
为了调查查询计划的使用情况,我试图了解内存中存储了什么样的查询计划 使用此查询:Sql server SQL Server 2008计划缓存几乎总是空的,sql-server,sql-server-2008,Sql Server,Sql Server 2008,为了调查查询计划的使用情况,我试图了解内存中存储了什么样的查询计划 使用此查询: 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
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如此频繁地清空查询计划缓存?我有什么问题 如果服务器没有内存压力,那么下面列出了其他一些可能的情况 是否经常安排这些行动?您是否启用了自动关闭功能 以下操作将刷新整个计划缓存,因此, 使第一次提交的批重新编译 之后:
sp\u配置
/重新配置
操作:
- 访问检查缓存桶计数
- 访问检查缓存配额
- 已启用clr
- 并行性的成本阈值
- 跨数据库所有权链接
- 索引创建内存
- 最大平行度
- 最大服务器内存
- 最大文本回复大小
- 最大工作线程数
- 每个查询的最小内存
- 最小服务器内存
- 查询调控器成本限制
- 查询等待
- 远程查询超时
- 用户选项
最后,只有实例重启解决了我的问题。现在plan cache看起来更健康了。大约一周前我也遇到了同样的问题,并且还发布了几个问题。尽管我还没有找到问题的答案,但我对这个过程有了一些见解。虽然听起来很傻,但SQL Server服务重新启动有助于解决另一个问题—恢复过程持续了4个小时。似乎有一笔相当大的交易
我不太清楚。但我能猜到的东西很少,比如大多数人都在使用重新编译,或者大多数程序都是动态的。@kumarnope。我没有与重新编译或动态SQL一起使用。您是否设置了“为临时优化”设置?@AllanS.Hansen否。它设置为
false
。否。未计划这些操作。自动关闭设置为false。sys.dm_exec_query_stats中的最小创建时间是多少?当时服务器上有什么日志吗?从应用程序发送的任何查询是否会发送重新配置或任何其他有问题的命令?最小创建时间刚刚开始。服务器日志中没有可疑活动,应用程序不会发送有问题的命令。该服务器上的其他实例感觉良好。它们的查询计划缓存是相当持久的。