SQL Server/SQL Server Tip

Tempdb 경합 (동시성 강화)

SungWookKang 2015. 7. 17. 08:53
반응형

Tempdb 경합 (동시성 강화)

 

 

Tempdb 데이터베이스를 많이 사용하면 SQL Server에서 페이지를 할당 하려고 할때 경합이 발생 할 수 있다. 

 

--tempdb를 많이 사용하는 예 

  • 임시 테이블(로컬 또는 전역)을 반복해서 만들고 삭제 
  • 테이블 변수 
  • CURSORS와 관련된 작업 테이블 
  • ORDER BY 
  • GROUP BY 
  • HASH PLANS 



   

 -- 경합 확인 방법

SELECT * FROM SYS.SYSPROCESSES 시스템 테이블 출력에서

waitresource가 2:1:1(PFS 페이지)또는 2:1:3(SGAM 페이지)로 표시되며 경합 정도에 따라 SQL Server가 응답하지 않는것 처럼 나타날 수 있다.

   

   

--원인

혼합 익스텐트에서 페이지 할당의 일환으로 SQL Server는 PFS(Page Free Space) 페이지를 검색하여 어떤 혼합 페이지를 할당할 수 있는지 확인해야 합니다. PFS 페이지는 모든 페이지에서 사용할 수 있는 여유 공간을 추적하고 각 PFS 페이지는 약 8000 페이지를 추적합니다. PFS 및 SGAM 페이지를 변경하기 위해 적절한 동기화가 유지되며 이를 통해 잠시 동안 다른 수정 작업을 막을 수 있습니다.

   

   

-- 해결 방법

  • 동일한 크기의 tempdb  데이터 파일 수 늘리기.
  • 별도의 디스크에 tempdb 할당
  • tempdb 자동증가 해제 (비례 채우기 알고리즘은 모든 파일에 할당을 유포하는 대신 GAM 할당에 가장 큰 파일을 사용)
  • -T1118 매개변수 사용.(mixed exten가 아닌 uniform extent 모드로 고정. 처음부터 64K extent 생성.)

 

-- 참고 링크

반응형

'SQL Server > SQL Server Tip' 카테고리의 다른 글

추적파일을 테이블로 로드하기  (0) 2015.07.17
  (0) 2015.07.17
LOGON 트리거  (0) 2015.07.17
데이터 타입 불일치 찾기  (0) 2015.07.17
스토리지 장애로 인한 DB복구 이야기  (0) 2015.07.17