bitmap index

Oracle 2006. 6. 7. 17:45 Posted by 한준_희아빠

1. 사용할곳

not in, not exists로 조회 조건을 걸어야 한다면 bitmap index를 사용할 가치가 있음.

2. 인덱스 생성 방법

create bitmap indexindex_name on table_name(column_name);

3. b-tree index 와의 차이점

1개의 key값이 테이블상의 여러 개의 record를 표현하기 때문에 UPDATE나 DELETE의 DML문을 사용할 경우

row level locking을 지원할 수 없다. (bitmap index 를 쓰는데의 치명적인 약점으로 발생한다.)

4.Bitmap Index와 관련된 Initialization parameter

1) CREATE_BITMAP_AREA_SIZE : Bitmap Index를 생성하기 위한 memory의 양을 결정하는 parameter로 cardinality가 클수록

크게 설정을 해야 performance를 낼 수 있다. default 는 8M이다.

이 parameter는 system이나 session level에서 변경할 수 없다.

2) BITMAP_MERGE_AREA_SIZE : Index range scan으로부터 탐색된 Bitmap Index는 Single Bitmap Index로 병합하기 전에

저장을 해야 하는데 이때 필요한 memory의 양을 결정 하는 parameter로 Bitmap Index를 통한

검색시에 성능에 밀접한 영향을 미치게 된다. cardinality 가 낮은 속성들을 결합하여 Bitmap

Index를 생성하게 되면, 경우의 수가 증가하여 Bitmap Index을 검색하는 COST가 증가하게

된다. 뿐만 아니라 모든 조건이 Equal로 주어지지 않으면 range scan으로 Bitmap Index를

검색하여 검색된 모든 bitmap에 대하여 연산을 수행하므로 성능이 저하될 수밖에 없다.

이 parameter 또한 system이나 session level에서 변경할 수 없다.

3) SORT_AREA_SIZE : BITMAP INDEX는 DML operation당 한번만 갱신되므로 insert 혹은 update의 performance를 향상시키기

위해서 SORT_AREA_SIZE를 효과적으로 설정해야 한다. SORT_AREA_SIZE는 user processor당 모두 할

당되므로 너무 큰 값을 설정하게되면 전체 resource의 낭비를 초래하여 오히려 performance를 저하시킬

수 있기 때문이다.

'Oracle' 카테고리의 다른 글

Oracle Scheduler작업 등록  (0) 2006.06.27
중복된 값의 REPLACE 하는 방법  (0) 2006.06.09
곱을 합으로 변형  (0) 2006.06.01
SQLCODE RESULT값  (0) 2006.05.09
날짜FORMAT변경  (0) 2006.05.09