반응형
데이터가 빈번히 삽입 삭제 수정 등이 발생하여 인덱스가 깨지거나 조각화가 일어날 경우 성능저하를 유발할 수 있다.
mssql은 클러스터형 테이블과 heap 테이블로 구성되는데 클러스터형 테이블은 클러스터형 인덱스 기준으로 데이터가 순서대로 저장된다.
사실은 클러스터형 인덱스도 테이블이라고 보면 쉽다. heap 테이블의 경우에는 클러스터형 인덱스가 없을 때 순서가 없이 그냥 저장되는 구조이다.
이때 테이블 리빌드는 조각화가 발생했을 때 중간중간 비어있는 공간을 인지함으로써 재정렬을 통해 테이블을 새것으로 만드는 작업이라고 할 수 있다.
인덱스 리빌드는 추후에 다시 포스팅할 예정이다.
간단하지만 다음 쿼리를 통해 테이블을 리빌드 해주자.
select 'ALTER TABLE ' + object_name(a.object_id) + ' REBUILD;'
,*
from sys.partitions a join sys.objects b on a.object_id = b.object_id and b.type = 'U'
WHERE object_name(a.object_id) NOT LIKE '%[0-9][0-9][0-9][0-9]%'
order by rows desc
반응형
'Programming > MSSQL' 카테고리의 다른 글
MSSQL 인코딩 확인 및 변경 (0) | 2018.04.17 |
---|---|
MSSQL 데이터에서 문자열 찾기 (0) | 2018.04.17 |
MSSQL 파일그룹, 할당 용량, 현재 사용중인 용량, 사용 가능한 용량 조회 (0) | 2018.04.16 |
MSSQL 테이블 인덱스, 인덱스 사이즈, row count 조회 (0) | 2018.04.16 |
ORACLE TO MSSQL 테이블 스키마 변경하기 (0) | 2018.04.16 |