반응형
/********************************************************************************************
-- Title : [2k5] 프로세서 구성 옵션을 사용한 서버 성능 최적화
-- Reference : http://support.microsoft.com/kb/319942/ko, INF: 166967, 319942

-- Key word : sp_configure 구성 설정
********************************************************************************************/


/* 고려 항목 */
 • 선호도 마스크(affinity mask) 
 • Windows NT 파이버(lightweigth pooling)
 • 최대 작업자 스레드(max worker threads)
 • 우선 순위 높이기(priority boost)
 • 작업 집합 크기 설정(set working set size)
 • 병렬 처리에 대한 비용 임계값(cost threshold for parallelism)

/* 선호도 마스크(affinity mask) */
 • 스레드가 특정 CPU에 얼마나 확실하게 바인딩 되어 있는지 나타냄.
 • "소프트" 선호호 사용.
 • 실제로 기본값이 아닌 값으로 조정시 성능향상 드물며 심지어 성능 저하.
 • 가능한 디폴트로 쓰자.

/* Windows NT 파이버(lightweigth pooling) */
 • 기본적으로 SQL Server는 활성 SPID 또는 사용자 프로세스 마다 스레드를 하나씩 사용.
 • 파이버 모드는 하나의 스레드로 여러 실행 컨텍스트 처리를 뜻함.
 • 실제로 파이버 모드 사용할 상황이 없고 다음 모든 상황 충족시만 사용 여부 확인.
    - 대규모 다중 프로세서 서버 사용
    - 모든 서버가 최대 성능에 가깝게 실행
    - 컨텍스트 전환 횟수가 많은지?(20,000/1초)
 • 파이버 모드시 SQL 메일 지원 불가.
 • 가능한 디폴트로 쓰자.

/* 최대 작업자 스레드(max worker threads) */
 • 한 사용자에게 연결되는 최대 스레드 수. 
 • 즉, 한 사용자의 여러 명령에 최대 255개의 스레드가 할당되서 지연 못 느낌.
 • 디폴트로 쓰자.

/* 우선 순위 높이기(priority boost) */
 • SMP(대칭적 다중 프로세서) 환경과 상관없이 SQL Server가 우선 순위로 실행되게 설정.
 • 설정시 최고 우선 순위로는 되지 않음.
 • 이례적인 상황이 아니면 사용하지 말라는 MS의 권고.
 • 그냥 디폴트로 쓰자.

/* 작업 집합 크기 설정(set working set size) */
 • 값 변경이 에러 발생 잘하고 MS에서 대놓고 바꾸지 말란다.
 • 그냥 디폴트 쓰자.

/* 병렬 처리에 대한 비용 임계값(cost threshold for parallelism) */
 • 쿼리에 대한 병렬 계획을 만들고 실행할 임계값 지정
 • 설정된 값보다 높은 경우에만 해당 쿼리에 대한 병렬 계획 실행(기본 실행 계획값 5)
 • 쿼리가 길면 일반적으로 병렬 계획을 사용하는 것이 좋다.(정말??)
 •  다음 조건에서는 무시됨.
    - 컴퓨터에 프로세서가 하나.
    - affinity mask 구성 옵션으로 단일 CPU만 사용
    - max degree of parallelism 옵션이 1로 설정
반응형

+ Recent posts