RESOURCE_SEMAPHORE 및 RESOURCE_SEMAPHORE_QUERY_COMPILE 대기 유형을 해결하는 방법


13

우리는 느린 구성의 SQL Server 쿼리가 크기가 300GB 인 데이터베이스 중 하나에서 데이터를 타격 / 페치하여 아래 구성으로 서버에서 호스팅되는 근본 원인을 파악하려고합니다.

Windows Server 2003 R2, SP2, Enterprise Edition, 16GB RAM, 12 CPU 32 비트

SQL Server 2005, SP4, Enterprise Edition, 32 비트

우리는 이미 한 달 이상 걸릴 64 비트로의 업그레이드에 대해 비즈니스에 알 렸습니다.

그러나 현재 문제의 경우 메모리 부족을 해결하거나 최종적으로 RAM을 늘리는 결론에 도달하면 데이터를 수집하려고합니다.

작업 완료 : 재 인덱싱 및 업데이트 통계가이 DB에 적합합니다.

아래에 표시된 것처럼로드 시간 동안 실행 된 지난 5 일 동안 세마포어 대기 유형에 주목했습니다.

대기 유형

아래 쿼리 후 정보가 거의 없음 : 버퍼 크기 = 137272

SELECT SUM(virtual_memory_committed_kb)
FROM sys.dm_os_memory_clerks
WHERE type='MEMORYCLERK_SQLBUFFERPOOL'

아래 쿼리 당 세마포 메모리 = 644024

 SELECT SUM(total_memory_kb)
FROM sys.dm_exec_query_resource_semaphores

다음은 좀 더 많은 정보는에서 수집 dm_exec_query_resource_semaphoressys.dm_exec_query_memory_grantsDMV의

dmvserror

따라서 위의 정보에서 SP_Blitz 데이터 당 리소스 세마포어가 문제인 것으로 보입니다.

사용 가능한 16GB RAM에 비해 리소스 세마포어 ID에 할당 된 메모리 'target_memory_kb'가 너무 낮습니다.

참고 * 8 시간 실행시 분석 당 'target_memory_kb'는 16GB에 비해 항상 1GB 미만입니까?

여기서 문제가 될 수있는 방법과 해결 방법은 제안하십시오.

감사


의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 . 추가 주제 외 의견은 단순히 삭제됩니다.
Paul White 9

답변:


25

오, 세상에, 나쁜 소식이 있습니다.

32 비트 OS에서 SQL Server는 쿼리 작업 영역과 같은 작업에 처음 4GB의 메모리 만 사용합니다. (그리고 그것은 4GB의 OS 와도 싸우고 있습니다. 다른 실행중인 앱도 해당 메모리와 경쟁합니다.)

4GB는 많이 들릴지 모르지만 실행하려면 몇 GB의 메모리가 필요한 쿼리를 작성하는 것이 상대적으로 쉽습니다. 쿼리에 충분한 메모리가 필요한 경우 쿼리를 시작하기에 충분한 메모리를 얻을 수 없으므로 SQL Server에서 RESOURCE_SEMAPHORE가 대기합니다. RESOURCE_SEMAPHORE_QUERY_COMPILE은 실행 계획을 컴파일하기에 충분한 메모리를 확보 할 수 없다는 것을 의미합니다.

어떻게 고치나요?

  • 64 비트 OS로 전환하십시오 (실행중인 OS는 오랫동안 지원되지 않습니다)
  • 64 비트 SQL Server 빌드로 전환
  • 서버의 메모리 요구량 감소 (이 상자에서 다른 앱을 실행하지 마십시오. 이는 4GB로 제한되므로 32 비트 상자에서 특히 중요합니다)
  • SQL Server가 쿼리 작업 영역에 처음 4GB 만 사용할 수 있으므로 RESOURCE_SEMAPHORE 대기에서 작동하지 않는 것을 제외하고 AWE / PAE 스위치에 더 많은 메모리를 사용하십시오.
  • 더 적은 메모리가 필요하도록 쿼리 및 인덱스 조정

32 비트 문제가 너무 나쁘고 이전 버전의 SQL Server에서는 실제로 어렵 기 때문에 마지막 문제조차 망설입니다. 현재 상태 인 경우 계획 캐시를 통해 메모리 부여별로 쿼리를 정렬하고 가장 큰 보조금 수신자를 찾아서 조정할 수 있습니다. 하지만이 오래된 골동품에는 옵션이 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.