실제 많은 수의 운영 환경들에서 테이블에 만들어져 있는 인덱스들의 일부는 실제로는 사용되지 않는 인덱스입니다. 실제로 사용되지 않는 인덱스를 관리하는 것은 불필요한 오버헤드만 유발하므로 인덱스 사용여부를 확인하고 실제로 사용되지 않는 불필요한 인덱스들을 구분해 내고 삭제하는 것이 필요합니다.
SQL Server 2005에서 새롭게 제공되는 DMV 중에서 sys.dm_db_index_usage_stats 동적 관리 뷰를 사용하여 사용된 인덱스와 그 빈도를 알 수 있습니다. 이 뷰를 사용하여 응용 프로그램에서 사용하지 않는 인덱스를 확인할 수 있으며, 또한 유지 관리 오버헤드를 유발하는 인덱스를 확인할 수도 있습니다.
SQL Server 서비스를 시작할 때마다 카운터는 빈 상태로 초기화되며, 데이터베이스가 분리되거나 종료될 때마다(예: AUTO_CLOSE가 ON으로 설정된 경우) 데이터베이스와 관련된 모든 행이 제거됩니다. 그러므로 DMV에 대한 스냅샷을 영구 테이블에 복사해 둠으로써 SQL Server가 재시작되기 이전의 데이터도 관리하는 것을 권고합니다.
Adventureworks 데이터베이스 인덱스 사용현황 확인하기 |
SELECT * FROM sys.dm_db_index_usage_stats WHERE database_id = db_id('Adventureworks'); GO |
사용되지 않은 인덱스 확인하기 |
SELECT object_name(i.object_id) AS Table_Name, i.name AS Index_Name FROM sys.indexes i, sys.objects o WHERE i.index_id NOT IN (SELECT s.index_id FROM sys.dm_db_index_usage_stats s WHERE s.object_id=i.object_id and i.index_id=s.index_id and database_id = db_id() ) -- dbid : db_id() 값을 입력 AND o.type = 'U' AND o.object_id = i.object_id ORDER BY object_name(i.object_id) ASC GO |
'연구개발 > SQL2005' 카테고리의 다른 글
[SQL 2005 GUIDE] 통계 생성하기 (0) | 2009.07.07 |
---|---|
[SQL 2005 GUIDE] 인덱스 I/O, 잠금, 액세스 방식 확인하기 (0) | 2009.07.07 |
[SQL 2005 GUIDE] 인덱스 삭제하기 (0) | 2009.07.07 |
[SQL 2005 GUIDE] 인덱스 비활성화하기 (0) | 2009.07.06 |
[SQL 2005 GUIDE] 온라인으로 인덱스 작업 수행하기 (0) | 2009.07.06 |