데이타 라는 것은 쌓이면 쌓일수록 고통스러워 합니다.

나를 좀 줄 맞춰 달라고...

애초 설계에서부터 잘 설계 하였다면..

시간이 지남에 따른 Maintenance 계획까지도 고려해서 개발했겠지만 그렇지 않은경우는..

주기적으로 상태를 확인하고 관리 해 줘야지만 클릭 = 응답 이라는 결과를 가져올 수 있겠지요.

 

전 지금 회사에서 DBA는 아니지만 부득이 DBA Role의 일부를 대신 해고 있는 관계로 DB쪽의 전문가는 아니지만..

개발자로서 DB에 대해 아는 부분만큼 정리합니다.

혹시 부족한 부분이 있으면 꼭 지적 해 주는 센스 ! 그렇다고 무시하진 말아주시공. ㅋ

----

1. 인덱스 단편화 확인

dbcc showconfig( 테이블명, '인덱스명') 으로

 

2. 인덱스 Re-build

  실행시키는 명령어에는 여러 가지가 있을지 모르겠지만 인덱스 Re-build 하는 방법은 2 가지가 있습니다.

그 절대 기준은 Lock 을 유발하느냐 안 하느냐

 

 2.1 Lock 유발 하는 rebuild

    - DBCC DBREINDEX( 테이블명, 채우기비율 )

    - ALTER INDEX 인덱스명 ON 테이블명 REBUILD WITH ( 각종 옵션들 )

 

 2.2 Lock 을 유발하지 않는 rebuild

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

 

3. 통계 업데이트

   UPDATE STATISTICS 테이블명

 

4. 성능 개선 확인

  위 작업을 하기 전에 현재 시스템의 Base line 이 어느 정도인지 정리하는 작업이 무엇보다 가장 중요하다 할 수 있겠습니다.

 우리의 현 상황을 제대로 알지 못하면 개선의 여지도 없기 때문에..

 특히나 엔지니어라면 '좀 느린데~~' 라는 추상적인 말 보다는 구체적인 수치로 정량화 할 수 있는 능력을 갖추어야 할 것 같습니다.

 어쨌든 위 1 ~ 3 번까지의 작업을 완료 후에는 Stored Procedure 의 실행 상태를 모니터링 하면서 작업 전 대비 얼마나 향상되었는지 확인 및 정리하시면 되겠습니다.

 

 

---------------------------

2005 부터는 ALTER INDEX 명령문을 사용해서도 On-line 서비스 중에 rebuild 할 수 있다고 해서 찾아보니...

약간의 제약 사항이 있네요.

Tech-net (http://technet.microsoft.com/ko-kr/library/ms188388.aspx)에서 퍼 온 내용입니다.

 

-----

ALL

인덱스 유형에 관계없이 테이블이나 뷰에 연결된 모든 인덱스를 지정합니다. ALL을 지정하면 하나 이상의 인덱스가 오프라인 또는 읽기 전용 파일 그룹에 있거나 지정한 작업이 하나 이상의 인덱스 유형에 대해 허용되지 않을 경우 해당 문이 실패합니다. 다음 표에서는 인덱스 작업과 허용되지 않는 인덱스 유형을 나열합니다.

이 작업에 ALL 지정

테이블에 다음 인덱스가 하나 이상 있으면 실패함

REBUILD WITH ONLINE = ON

XML 인덱스

공간 인덱스

큰 개체 데이터 형식 열: imagetextntextvarchar(max)nvarchar(max)varbinary(max) 및xml

REBUILD PARTITION = partition_number

분할되지 않은 인덱스, XML 인덱스, 공간 인덱스 또는 비활성 인덱스

REORGANIZE

ALLOW_PAGE_LOCKS가 OFF로 설정된 인덱스

REORGANIZE PARTITION =partition_number

분할되지 않은 인덱스, XML 인덱스, 공간 인덱스 또는 비활성 인덱스

IGNORE_DUP_KEY = ON

공간 인덱스

XML 인덱스

ONLINE = ON

공간 인덱스

XML 인덱스

 

---

'IT 이야기 > DataBase' 카테고리의 다른 글

Redis Architecture (번역문)  (0) 2016.06.27
MSSQL 상위 50개의 SQL 문장 확인하기  (0) 2015.05.27
SQL Server Performance Monitor Counter Part 1  (0) 2015.05.27
MSSQL File Size 구성  (0) 2015.05.27
MSSQL Transaction Log Full  (0) 2015.05.27

+ Recent posts