介绍
简而言之,我的服务器上发生了很多临时查询,来自我无法控制且无法更改的应用程序(即使推送索引也很困难,而且它们使用了很多堆......)。
眼镜
操作系统 - Windows Server 2012 R2(主节点)SQL Server 2014 - 12.0.5546
Always On AG 与具有相同硬件的辅助同步节点 + Build。
由于许可,我们只能将 24 个内核中的 12 个用于 sql server(我没有这样做)。很容易发现哪个 12 个内核;)。

问题
现在关于我的问题。目前,我们每 30 分钟清除一次“TokenAndPermUserStore”。这甚至在它到达我手中之前就在服务器上发生了。我们使用以下命令执行此操作:
DBCC FREESYSTEMCACHE ('TokenAndPermUserStore')
Run Code Online (Sandbox Code Playgroud)
我使用这个查询来检查缓存:
SELECT SUM(pages_kb) / 1024 AS
"CurrentSizeOfTokenCache(mb)"
FROM sys.dm_os_memory_clerks
WHERE name = 'TokenAndPermUserStore'
Run Code Online (Sandbox Code Playgroud)
在清除之后,这是缓存大小:
CurrentSizeOfTokenCache(mb)
1602
Run Code Online (Sandbox Code Playgroud)
在某个时间点,例如清除后 15 分钟,这是缓存大小:
CurrentSizeOfTokenCache(mb)
1976
Run Code Online (Sandbox Code Playgroud)
更新: 现在,当 CPU 使用率再次稳定时(使用 40%(监控时为 20%),缓存远低于 CPU 使用率高时的最低点。
CurrentSizeOfTokenCache(mb)
1281
Run Code Online (Sandbox Code Playgroud)
昨天的例子:
昨天的这张照片上的下降非常明显:(注意因为我们可以使用 24 个内核中的 12 个,50% 意味着在监控软件中 100%,换句话说,cpu 使用率可能不会超过 50%,因为它专用于仅限 sql 服务器)
需要注意的一件重要事情是,昨天我们在 top …