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]
참고
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 |