小编Grz*_*rzO的帖子

SQL Server 2016 SP1 CU3 清除计划缓存

每隔几分钟到大约一小时,进程缓存就会被刷新(但不是完全!)。如果我运行:

SELECT count (*) FROM sys.dm_exec_cached_plans
Run Code Online (Sandbox Code Playgroud)

……刚刚清零之后,计划的数量下降到几百个,然后逐渐增加到大约2000个,然后再次清零,依此类推。

服务器在 VMWare 上运行,它有128 GB的 RAM(SQL Server 最大服务器内存设置为102 GB,最小服务器内存设置为72 GB)。根据 SentryOne 的输出,我可以看到缓冲池消耗了~61 GB。我没有看到任何内存压力指标。

SentryOne SQL Server 内存使用情况

我还观察到,当我将最小服务器内存减少到 16 GB 时,进程缓存清除的频率急剧增加。

我的SQL Server版本如下:

Microsoft SQL Server 2016 (SP1-CU3) (KB4019916) - 13.0.4435.0 (X64)
Run Code Online (Sandbox Code Playgroud)

还有什么:

  • 我还没有尝试过 LPIM,因为它需要重新启动 SQL Server,但即使它是解决方案,我也很想了解为什么会发生这个问题。此外,Brent建议它仅在缓冲池修整的情况下有帮助。在我的情况下,缓冲池看起来完好无损,只有 proc 缓存受到影响。
  • 我没有找到任何可以对此负责的工作,也找不到任何真正的模式。
  • 如果有人发现这对修复/调查此问题有用,我可以访问 vCenter。但如果是这种情况,请您告诉我我应该在那里检查什么。

我怀疑 VMWare 可能在这里扮演了一些角色,但是当我检查来宾端可用的 perfmon 计数器时,我没有发现任何可疑的东西。

VM 内存性能计数器

我还根据Brent 的建议收集了sp_Blitz的输出:

**Priority 10: Performance**:

- Query Store Disabled - The new SQL Server 2016 Query Store …
Run Code Online (Sandbox Code Playgroud)

sql-server plan-cache sql-server-2016

2
推荐指数
1
解决办法
1077
查看次数

标签 统计

plan-cache ×1

sql-server ×1

sql-server-2016 ×1