카테고리 없음

TraceFlag 1117

알 수 없는 사용자 2013. 6. 11. 09:47

안녕하세요 SmileYoon입니다.

오늘은 파일 그룹 사용시 알고 있어야할 TraceFlag인 T1117에 대해서 소개 드리겠습니다.


대용량 테이블에 파일그룹을 사용하게 되면 병렬 처리가 가능하여 성능상 많은 이점이 있습니다.

꼭 알고 있어야할 부분

1.파일그룹 안에 있는 여러 데이터 파일에 균등하게 데이터를 채우게 됩니다.

=>데이터 파일을 물리적으로 다른 디스크에 생성해야 합니다.


2.데이터 파일의 남은 공간을 계산하여 서버 엔진이 계산하여 데이터를 채우기 때문에 초기 데이터 파일 생성시 동일한 Size로 만듭니다. (데이터파일의 남은 공간을 확인하는 명령어 DBCC SHOWFILESTATS)

=>예를 들어 A파일에 100MB, B파일에 200MB가 남아 있다면 A파일에 1개의 Extents할당, B파일에 2개의 Extents를 할당하여 쓰기 작업이 발생합니다.


3. T1117 TraceFlag 옵션을 설정하지 않았을 경우 아래와 같이 동작합니다.

1,2,3번 데이터 파일이 있습니다. 처음 시작은 균등하게 데이터를 채웁니다. 

1,2,3번 데이터파일이 다 찼습니다.

이런 경우 1번 데이터 파일은 설정된 파일 증가 크기 만큼 Auto Growth가 발생하며, 데이터 입력 시 1번 파일만 사용하게 됩니다.

또 1번 파일을 다 사용할 경우 2번 파일이 Auto Growth가 발생합니다. 그리고 2번만 사용합니다.

그리고 2번 다 쓰면, 3번만 사용합니다.... 이럴 경우 파일그룹의 장점인 병렬 처리를 하지 못해 성능이 느려집니다.

이럴 경우 T1117  TraceFlag 옵션을 설정하게 되면 문제는 해결됩니다.

파일 그룹안에 데이터파일에 Auto Growth Event가 발생하면 파일 그룹안에 있는 데이터 파일 모두 AutoGrowth가 발생하게 됩니다.


[정리]

파일그룹의 이점을 활용하기 위해서는 T1117 TraceFlag를 설정해 주셔야 합니다.

또한 비례 균등 채우기 알고리즘은 데이터파일 안에 남아 있는 공간의 비율을 가지고 익스텐트 할당이 일어난다는 점입니다.


[참고 사이트]

SQL Server 2008 Trace Flag -T 1117

http://blogs.technet.com/technet_blog_images/b/sql_server_sizing_ha_and_performance_hints/archive/2012/02/09/sql-server-2008-trace-flag-t-1117.aspx