여기에는 많은 일이 있으며 대부분은 꽤 광범위하고 모호합니다.
2008R2 RTM은 2010 년 4 월 21 일에 출시되었습니다. 완전히 지원되지 않습니다. 약 3 년 전에 나왔던 최신 서비스 팩을 우선적으로 받고 싶을 것입니다. 그렇게하면 이상한 버그 나 무언가를 치는 경우 보상받을 수 있습니다. 머리에 이상 여기가 당신이 다운로드 할 필요가 무엇인지 알아낼 수 있습니다.
vCPU를 추가하고 (1 ~ 4) 설정을 변경하지 않았으므로 이제 쿼리가 병렬로 진행될 수 있습니다. 나는 이것이 모두 더 빠를 것 같지만 잠깐만 요!
RAM을 추가했을 수 있지만 서버가 활용할 수 있도록 Max Server Memory를 변경하지 않았을 수 있습니다.
서버가 무엇을 기다리고 있는지 파악하십시오. 내가 작업하는 오픈 소스 프로젝트는 SQL Server를 측정하는 데 도움이되는 무료 스크립트를 제공합니다. 머리에 이상 여기에 당신이 그들에게 시험을주고 싶어합니다.
sp_BlitzFirst를 가져 와서 서버의 대기 통계를 확인하십시오. 몇 가지 방법으로 실행할 수 있습니다.
서버가 시작된 후 대기중인 내용이 표시됩니다.
EXEC dbo.sp_BlitzFirst @SinceStartup = 1;
30 초 동안 현재 대기중인 쿼리가 표시됩니다.
EXEC dbo.sp_BlitzFirst @Seconds = 30, @ExpertMode = 1;
대기중인 쿼리가 무엇인지 파악한 후에 (대기 통계에 대해 작성된 내용이 많음) 상황을 제어하기 위해 변경 작업을 시작할 수 있습니다.
대기중인 것이 표시되면 CXPACKET
검색어가 병렬로 진행되고 서로 짓밟히는 것일 수 있습니다. 이 옵션을 선택하면 병렬 처리에 대한 비용 임계 값을 최대 50까지 높이고 MAXDOP를 2로 떨어 뜨릴 수 있습니다.
이 단계 이후에는 sp_WhoIsActive 또는 sp_BlitzWho (후자는 GitHub 리포지토리에 있음) 와 같은 것을 사용 하여 쿼리 계획 캡처를 시작해야합니다. 대기 통계 외에도, 무엇이 잘못되었는지 파악하기 위해 볼 수있는 가장 중요한 것 중 하나입니다.
SQL Server와 관련하여 체크 아웃하기위한 VMWare 카운터 에 대한 Jonathan Kehayias의이 기사를 확인할 수도 있습니다 .
최신 정보
대기 통계와 소년을 검토하는 것은 이상합니다. CPU에는 분명히 무언가가 있습니다. 서버는 대개 지루해 보이지만 물건이 뜨거워지면 상황이 나빠집니다. 나는 이것을 쉽게 분해하려고 노력할 것이다.
라는 독 대기 시간을 치고 THREADPOOL
있습니다. 당신은 그것의 톤을 가지고 있지 않지만 서버가 심하게 활동적이지 않기 때문에 의미가 있습니다. 잠시 후에 이유를 설명하겠습니다.
당신은에 정말 긴 평균 대기를 SOS_SCHEDULER_YIELD
하고 CXPACKET
. VM을 사용하고 있으므로 SQL Server에 예약이 있거나 상자가 과도하게 구독되지 않았는지 확인하고 싶을 것입니다. 시끄러운 이웃은 당신의 하루를 정말로 망칠 수 있습니다. 또한 서버 / VM 게스트 / VM 호스트가 균형 전원 모드에서 실행되고 있지 않은지 확인하려고합니다. 이로 인해 CPU가 불필요하게 낮은 속도로 회전하고 즉시 최대 속도로 회전하지 않습니다.
그들은 어떻게 연결합니까? 4 개의 CPU를 사용하면 512 개의 작업자 스레드가 있습니다. 하나의 CPU로 같은 양 을 가지게 되었지만 이제는 쿼리가 병렬화 될 수 있으므로 더 많은 작업자 스레드를 사용할 수 있습니다. 귀하의 경우 병렬 쿼리의 병렬 분기당 4 개의 스레드.
무슨 일이야? 아마도 모든 것. 병렬 처리의 기본 비용 임계 값은 5입니다.이 숫자는 90 년대 후반에 이와 같이 보이는 데스크탑에서 작동하는 기본값으로 만들어졌습니다 .
물론 하드웨어는 대부분의 랩톱보다 작지만 여전히 그보다 앞서 있습니다.
많은 병렬 쿼리가 진행되면 작업자 스레드가 부족한 것입니다. 이런 일이 발생하면 쿼리는 스레드가 진행되기를 기다립니다. 또한 SOS_SCHEDULER_YIELD
쿼리가 CPU를 중단하고 오랫동안 돌아 오지 않습니다. 차단 대기가 표시되지 않으므로 쿼리 내 병렬 처리 대기에 모두 채워져있을 가능성이 큽니다.
당신은 무엇을 할 수 있나요?
- 균형 전원 모드에 아무것도 없는지 확인하십시오
- MAXDOP를 2로 변경
- 병렬 처리에 대한 비용 임계 값을 50으로 변경
- 위의 Jon K. 기사를 따라 VM 상태를 확인하십시오.
- 호출 된 스크립트를 사용하여
sp_BlitzIndex
누락 된 인덱스 요청을 찾으십시오.
보다 철저한 문제 해결 을 위해 클라우드에서 하드웨어 크기 조정에 관해 Google 에 쓴 백서를 확인하십시오 .
이것이 도움이되기를 바랍니다!