본문 바로가기

Oracle/Admin

[Oracle] Bitmap Index

728x90

bitmap index란

bitmap index 는 컴퓨터에서 사용하는 최소단위인 비트를 이용하여 컬럼값을 저장하고, rowid를 자동으로 생성하는 인덱스의 한 방법이다. 비트를 직접 관리하므로 저장공간이 크게 감소하고 비트연산을 수행할 수 있다는 이점이 있다.

bitmap index 는 index key value + start rowid + end rowid + bitmap 엔트리로 구성되어있다.

start rowid와 end rowid 의 range 사이에 있는 모든 수 만큼 bitmap이 표현되어야 하지만, 오라클에서는 내부적인 압축 알고리즘을 사용하여 bitmap을 생성하기 때문에 모두 표현되지 않는 경우도 있다. 비트맵도 b-tree처럼 조직되어 있지만, leaf 노드는 rowid 값들 대신 각 key값에 대한 bitmap을 저장한다. 

 

bitmap index의 장단점

장점

- 테이블이 많은 행을 가지며 키 열을 적은 분포도를 가질 때, 즉 열이 갖는 서로 다른 값이 몇 개 안될 때 유리하다 ( 성별이나 결혼 여부) 

- 질의문이 or 연산자를 포함하는 여러 개의 where 조건을 자주 사용할 때 유리하다.

 

단점

- insert, update, delete와 같은 query 문에서는 무의미 하다.

- 분포도가 좋은 값에 대해서는 일반적은 b-tree인덱스가 유리하다. 즉  bitmapped index 적용 column의 후보는 대게 5가지 정도 이내의 값(cardinality)을 갖는다.

 

bitmap index와 b-tree index 비교

b-tree bitmap
큰 분포도를 갖는 테이블에 적합 적은 분포도를 갖는 테이블에 적합
비교적 키의 갱신 비용이 적음 갱신 비용이 매우 큼
or 사용 query문에 비효율적 or 사용 query문에 효율적
OLTP에 유용 DSS에 유용

 

bitmap index 생성 문법

CREATE BITMAP INDEX [schema.]index
ON [schema.]table ( column [, column]) 
[ tablespace tablespace ]
[ pctfree integer ]
[ initrans integer ]
[ maxtrans integer ]
[ storage-clause ]
[ loggin | nologging ]
[ nosort]

 

참고

http://www.gurubee.net/lecture/1109

728x90
반응형

'Oracle > Admin' 카테고리의 다른 글

[Oracle] ROWDEPENDENCIES , ROW_ROWSCN  (0) 2024.03.08
[Oracle]Index fragmentation  (0) 2024.02.20
[Oracle] Index 사이즈 예측  (0) 2024.02.14
[Oracle] SQL PLAN 고정 방법 2가지  (0) 2024.02.07
[Oracle] Dynamic Statistics  (0) 2023.12.07