(请使用coreinfo -v
(sysinternal实用程序)输出更新您的问题,以更好地了解您的CPU /套接字和NUMA分布)
我们查看的总体CPU利用率约为60%。我们没有查看特定于套接字的CPU指标。I / O指标是平均值。
在我看来,您在错误的树上吠叫。SQL Server NUMA
知道。有做跨NUMA内存访问更小的性能损失。您还可以使用此查询来查看NUMA
您拥有多少个节点以及将哪个CPU和内核分配给哪个NUMA
:
SELECT parent_node_id, scheduler_id, cpu_id
FROM sys.dm_os_schedulers WITH (NOLOCK)
WHERE [status] = N'VISIBLE ONLINE';
或多少NUMA
:
select COUNT(distinct Parent_node_id)
from sys.dm_os_schedulers
where [STATUS] = 'VISIBLE ONLINE'
and Parent_node_ID < 64
我们进行的查询几乎没有逻辑读取,但需要超过1分钟的时间。
当您由于统计数据过时而生成错误的查询计划时,通常会发生这种情况。确保更新了统计信息并正确整理了索引碎片。
另外,您需要将MAXDOP设置为更合理的值,以避免工作线程不足。
将cost threshold of parallelism
默认值5设置为一个良好的起始值(如45),然后监视该值并根据您的环境进行调整。
如果您正在运行大量临时查询,请打开(设置为1)optimize for ad hoc workloads
以防止计划缓存膨胀。
谨慎使用:如果您在较新的计算机上运行SQL Server 2008/2008 R2,并且每个NUMA节点上的CPU数量超过8个,则可以使用T8048;如果在SQL Server 2012或2014上,则有一个修补程序。
强烈建议您开始收集有关数据库服务器实例的等待统计信息。
请参阅:工作原理:SQL Server(NUMA本地,外部和外部内存块)