인덱스 조각화 정보 확인 (DBCC SHOWCONTIG)
- 정기 적인 조각화 정보 확인을 통한 인덱스 재구성 주기 결정
- 적절한 채우기 비율 (fillfactor) 결정

- DBCC SHOWCONTIG('테이블명', '인덱스명')

 

[T_FLOWART 테이블]

DBCC SHOWCONTIG('T_FLOWART', 'PK_T_FLOWART')

 

(결과 출력)

DBCC SHOWCONTIG이(가) 'T_FLOWART' 테이블을 검색하는 중...
테이블: 'T_FLOWART'(423672557); 인덱스 ID: 1, 데이터베이스 ID: 5
TABLE 수준 검색을 수행했습니다.
- 검색한 페이지................................: 33649 (현재 33649 페이지를 사용하고 있다)
- 검색한 익스텐트 ..............................: 4231 (사용하는 익스텐트)
- 익스텐트 스위치..............................: 10337

최적화 익스텐트 스위치 갯수는 검색한 익스텐트 - 1 한 결과 값이어야 한다.

즉, 4231 - 1 = 4230 이어야지 최적화되었다고 말할수 있다.


- 익스텐트당 평균 페이지 수........................: 8.0
- 검색 밀도[최적:실제].......: 40.69% [4207:10338]

Best CountActual Count의 비율입니다.

모든 데이터가 인접한 경우 이 값은 100이고 이 값이 100보다 작으면 일부 데이터가 조각화된

것입니다.

사용할 익스텐트의 갯수가 4207이면 충분한데 10338 갯수를 사용하고

있다라는 뜻이다. 즉, 조각화가 많이 발생되어 있다라는 말이다.(리소스 낭비)

 


- 논리 검색 조각화 상태 ..................: 20.97%
- 익스텐트 검색 조각화 상태 ...................: 0.57%
- 페이지당 사용 가능한 평균 바이트 수.....................: 935.5
- 평균 페이지 밀도(전체).....................: 88.44%

평균 페이지 밀도입니다(백분율). 이 값은 행 크기의 영향을 받습니다. 따라서 이 값은 페이지의 꽉 찬 정도를 보다 정확하게 반영합니다. 이 백분율 값이 클수록 좋습니다.

 

 

 

[인덱스 재구성 3가지 방법]
WITH DROP_EXISTING
- 페이지 압축
- 컬럼 변경
- FILLFACTOR, PAD_INDEX 변경
- 비클러스터형 인덱스를 클러스터형 인덱스로  변경
DBCC DBREINDEX
- 페이지 압축
- FILLFACTOR 변경
- 테이블의 모든 인덱스 일괄 적용 가능
DBCC INDEXDEFRAG
- 물리적인 리프 페이지의 순서를 논리적인 순서로 재정렬
- 기존에 지정된 FILLFACTOR 적용

 

 

[인덱스 재구성 구문]

WITH DROP_EXISTING

CREATE CLUSTERED INDEX IDX_EMP_01
ON EMP (DEPTNO ASC, TITLE DESC, SAL DESC )
WITH DROP_EXISTING
ON HR_FILEGROUP

DBCC DBREINDEX
DBCC DBREINDEX ('테이블명','인덱스명', 80)

DBCC INDEXDEFRAG

DBCC  INDEXDEFRAG ('DB명','테이블명','인덱스명')

 

 

[SQL Server 2005에서 인덱스 조각화 정보 확인 방법]

 

[구문]

sys.dm_db_index_physical_stats (

    { database_id | NULL }               /* NULL: 서버내의 모든 데이터베이스 */

    , { object_id | NULL }                /* NULL: 해당 데이터베이스내의 모든 오브젝트 */

    , { index_id | NULL | 0 }              /* NULL: 해당 테이블의 모든 인덱스 */

    , { partition_number | NULL } /* NULL: 해당 오브젝트의 모든 인덱스 */

    , { mode | NULL | DEFAULT } /* NULL: LIMIT */

)

 

select * from sys.dm_db_index_physical_stats (db_id('test'), object_id('t3'), null, null, null)

위의 쿼리를 통해 test 데이터베이스의 t3 테이블에 있는 모든 인덱스의 조각화 정보를 살펴볼 수 있다.

 

avg_fragmentation_in_percent 컬럼의 값이 조각화를 의미하는데,

이 조각화의 수치가 올라갈수록 성능에 나쁜 영향을 미칠 수 있다.

 

'연구개발 > DBA' 카테고리의 다른 글

추적파일 테이블로 변환  (0) 2010.06.30
SQL Profiler  (0) 2010.06.30
ms-sql 백업과 복원  (0) 2010.06.28
현재실행중인(부하를 많이 잡아 먹는)쿼리문 보기  (0) 2010.06.28
프로시저 재 컴파일  (0) 2010.06.28

+ Recent posts