티스토리 뷰

반응형
DB

관리하다보면

필수적으로 사용하게 되는 것이

바로 Index(인덱스)다.

인덱스 작성을 통해서  데이터 검색 시간이

상당히 빨라지게 할 수 있기 때문이다.

그런데, 인덱스를 설정해 놓고 사용하다 보면

언젠가부터 검색시간이 처음 설정했을 때 보다

느려지는 것을 느낄 수 있을 것이다.

그것은 왜냐하면 DB라는 것이 멈춰있는 게 아니고 

항상 데이터의 삽입, 삭제, 업데이트 작업이

수행되기 때문에 인덱스에 조각화가 일어나기 때문이다.

인덱스의 조각화정도가 심해지면 그만큼 검색의

효율이 떨어질 수 밖에 없는데,

DB관리자는 인덱스의 조각화를

항상체크하고 관리를 해 주어야 한다.

실제로 인덱스를 설정만 해두고 관리를 하지 않아 성능이 떨어진 경우,

인덱스 재구성 또는 재작성을 통해서 DB성능의 향상을 기대해 볼 수도 있다.

참고로 인덱스의 기본적인 내용에 대해서 작성한 이전 글.


MsSql에서는 인덱스의 효율적인 관리를 할 수 있는 DB 메인터넌스항목을 제공해 주고 있다.

하지만, 인덱스 재구성작업이 제대로 이루어 지지 않고 아래의 에러가 발생하는 경우가 있을 것이다.

다음 오류로 인해 쿼리 "ALTER INDEX [IND_NAME] ON [dbo].[TABLE] REORGANIZE WITH ( LOB_COMPACTION = ON )
"을(를) 실행하지 못했습니다: "페이지 수준 잠금이 비활성화되어 있으므로 테이블 "TABLE"의 인덱스 "IND_NAME"(파티션 1)을(를) 다시 구성할 수 없습니다.". 가능한 실패 원인: 쿼리에 문제가 있거나 "ResultSet" 속성, 매개 변수 또는 연결을 올바르게 설정하지 않았을 수 있습니다.


이는 다음과 같은 설정으로 인한 것이다.



위 그림의 빨간 테두리 안과 같이 인덱스 엑세스 시점에서 페이지 잠금사용에 체크가 되어있지 않다면

에러가 발생하기 때문에 반드시 체크를 해야 한다.







블로그코리아에 블UP하기
반응형
댓글
반응형
05-17 05:57
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함