본문 바로가기

Database

[DB]비트맵 인덱스(Bitmap Index)

인덱스의 구조에는 B- Tree, B+ Tree, Hash, Bitmap 등 다양한 구조가 있습니다. 이번 글에서는 Bitmap 구조에 대해서 알아보도록 하겠습니다.

비트맵 인덱스(Bitmap Index)

  • 인덱스 칼럼의 데이터를 Bit 값인 0 또는 1로 변환하여 인덱스 키로 사용하는 방법입니다.
  • 비트맵 인덱스의 목적은 키(Key) 값을 포함하는 행의 주소를 제공하는 것입니다.
  • B-Tree 인덱스와 달리 카디널리터 값이 낮은 경우(특정 데이터 집합의 유니크한 값의 개수가 적은 경우. 즉, 중복도가 높은 경우)에 사용하기 좋습니다.
  • 비트 맵은 흔히 색상표를 예시로 많이 드는데, 아래와 같은 형태로 표현됩니다.

  • 분포도가 나쁜 Column에 사용하기 적합하며 성능 향상의 효과를 얻을 수 있습니다.
  • 데이터가 Bit로 구성되어 있어 효율적인 논리 연산이 가능하고 저장 공간이 작습니다.(공간 효율)
  • 다중 조건을 만족하는 튜플 개수를 계산하는 작업에 적합합니다.(위에서 예시로 든 색상표 이외에도 성별(남/여), 업무 형태(자택/출퇴근)와 같은 두 개의 값만 갖는 작업에 효율적입니다.)
  • 동일한 값이 반복되는 경우가 많아 압축 효율이 좋습니다.

정리

비트맵 인덱스는 OLAP(Online Analytical Processing : 온라인 분석 처리)에 사용되며, 대량의 데이터를 한꺼번에 입력한 뒤 분석 또는 통계 정보를 출력할 때 많이 사용합니다. 

또한, 데이터 값의 종류가 적고 동일한 데이터가 많을 때 주로 사용합니다.


참고

https://velog.io/@gayeong39/%EB%B9%84%ED%8A%B8%EB%A7%B5-%EC%9D%B8%EB%8D%B1%EC%8A%A4BitMap-Index