Gui*_*ipp 5 performance parallelism plan-cache sql-server-2016
我有一台装有 SQL Server 2016 的全新服务器。
它有 24 个 CPU,大约 80go 的 RAM。
问题是,有时,CPU 会变得非常高(> 70%),而没有任何具体原因。
如果我查看“execute sp_WhoIsActive @get_locks=1”,我会运行大约 40 个查询,但没有锁定,其中一些查询超过 30 秒而不是几毫秒。
这在生产中大约每天附加一次。到目前为止,我唯一的解决方法是将选项“并行成本阈值”从 90 更改为 89,从 89 更改为 90。更改此值实际上可以在不到 10 秒的时间内解决问题,并且 CPU 费用越来越低,并且我的用户更快乐。
你们知道这个问题的根源吗?我已经考虑过计划缓存,但我不知道如何处理这个想法......
编辑:我已禁用英特尔超线程,但问题仍然存在。我已经安排了一个每小时清理缓存的任务。你有什么主意吗 ?
编辑 2:我在 Microsoft 支持上打开了一个问题。显然,重新启动 SQL Server 2016 解决了页面保留问题。如果我有一个“真正的”修复程序,我会尽快通知您。
小智 -1
请验证 MAXDOP 的设置。请查看 Microsoft 的建议。在大多数情况下,最佳值是可供 SQL Server 使用的专用核心的数量。但最大值设置为“8”。在某些情况下,这可能会有所不同,需要进行良好的测试才能设置为更高的值。
我假设您有两个启用了超级威胁的六核处理器。在启用超级威胁的情况下,您的查询可能无法很好地执行。在某些情况下,使用 12 个“真实”核心的 SQL Server 性能比使用 24 个核心与超级威胁相结合要好。
您应该尝试禁用超级威胁并验证新设置。
不幸的是,您写道,这是您的生产环境。您能够验证类似硬件和类似设置上的设置吗?
此外,您应该查看一下您的 I/O 子系统。是否有多个 tempdb?
附加(我无法评论其他评论):
DBCC FREEPROCCACHE 将影响所有用户。尝试在对性能问题影响最大的 SQL 查询中使用选项重新编译。
归档时间: |
|
查看次数: |
3530 次 |
最近记录: |