( CPU / 소켓 및 NUMA 배포에 대한 더 나은 컨텍스트를 얻으려면 (sysinternal 유틸리티) 출력으로 질문을 업데이트하십시오coreinfo -v
)
전체 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
45 같이 좋은 시작 값 5의 기본에서 떨어져을하고, 그 다음에 그 값을 모니터하고 사용자 환경에 따라 그것을 조정합니다.
많은 임시 쿼리를 실행중인 경우 optimize for ad hoc workloads
계획 캐시 팽만감을 방지하려면 설정 (1로 설정)하십시오 .
주의하여 사용하십시오. NUMA 노드 당 8 개 이상의 CPU가있는 최신 시스템에서 SQL Server 2008/2008 R2를 실행 중이고 SQL Server 2012 또는 2014에있는 경우 핫픽스 가있는 경우 T8048 을 사용할 수 있습니다 .
데이터베이스 서버 인스턴스에 대한 대기 통계 정보 수집을 시작하는 것이 좋습니다 .
참조 : 작동 방식 : SQL Server (NUMA 로컬, 외부 및 자리 비움 메모리 블록)