B-트리 대 비트맵 데이터베이스 인덱스
누가 비트맵 인덱스와 b 트리 인덱스의 차이점을 설명해 줄 수 있습니까?어떤 상황에서 이 두 가지를 모두 사용하시겠습니까?각각의 장점/단점은 무엇입니까?
위키피디아에서: B-Tree와 비트맵 인덱스.사용 사례:
B-트리는 다음과 같은 경우에 사용되는 일반적인 인덱스 유형입니다.
CREATE INDEX ...
데이터베이스:- 인덱스 데이터의 아주 작은 부분 집합(일반적으로 최대 5%-10%)만 선택하면 매우 빠릅니다.
- 인덱스된 값이 여러 개일 때 더 잘 작동합니다.
- 여러 B-Tree 인덱스를 결합할 수도 있지만, 더 간단한 접근 방식이 더 효율적인 경우가 많습니다.
- 인덱싱된 데이터에 대한 고유한 값이 거의 없거나 데이터의 큰 부분 집합(일반적으로 10% 초과)을 가져오려는 경우에는 유용하지 않습니다.
- 각 B-Tree 인덱스는 인덱싱된 테이블에 값을 삽입/업데이트할 때 약간의 페널티를 부과합니다.매우 바쁜 테이블에 인덱스가 많은 경우 문제가 될 수 있습니다.
이러한 특성으로 인해 한 번에 매우 작은 데이터 세트로 작업할 때 대부분의 쿼리가 ID로 필터링되므로 우수한 동시 성능을 원하는 OLTP 응용프로그램에서 검색 속도를 높이는 데 매우 유용합니다.비트맵 인덱스는 보다 전문적인 인덱스 변형입니다.
- 인덱스 값을 비트맵으로 인코딩하므로 공간 효율성이 매우 높습니다.
- 구별되는 인덱스 값이 거의 없을 때 더 잘 작동하는 경향이 있습니다.
- DB 최적화 도구는 인덱스된 여러 비트맵을 매우 쉽게 결합할 수 있으므로 쿼리에서 복잡한 필터를 효율적으로 실행할 수 있습니다.
- 값을 삽입/업데이트할 때 매우 비효율적입니다.
비트맵 인덱스는 ETL 프로세스를 제외하고 데이터베이스만 읽는 데이터 웨어하우스 응용 프로그램에서 주로 사용되며, 일반적으로 스타 스키마에 대해 복잡한 쿼리를 실행해야 합니다. 비트맵 인덱스는 일반적으로 고유한 값이 너무 많지 않은 차원 테이블의 조건에 따라 필터링 속도를 높일 수 있습니다.
요약하자면, 데이터 웨어하우스 개발자가 아니고 비트맵 색인의 이점을 알고 있지 않은 경우 B-Tree 색인(대부분의 데이터베이스에서 "기본" 색인)을 사용합니다.
일반 BTree 인덱스를 사용하는 경우 모든 열 값이 null인 행은 인덱스에서 제외됩니다.즉, "column is null" 조건을 가진 쿼리는 일반 인덱스의 이점을 얻지 못합니다.
(columnn_name, 1)(또는 다른 상수)에 인덱스를 생성하여 null 값 열이 포함되어 "is null" 쿼리를 실행할 때 최적화 도구가 쿼리를 사용할 수 있습니다.
비트맵 인덱스는 B*Tree 인덱스와 달리 자동으로 null 값을 포함합니다.이는 최적화 도구가 "is null" 술어를 평가할 때 비트맵 인덱스를 사용할 수 있음을 의미합니다.
그러나 비트맵 인덱스는 동시성 문제로 이어져 같은 테이블의 다른 DML을 차단할 수 있습니다.따라서 OLTP 애플리케이션에서는 이러한 작업을 피해야 합니다.또한 비트맵 인덱스에는 Enterprise Edition이 필요하므로 이러한 인덱스를 사용하는 데 라이센스가 필요할 수 있습니다.
언급URL : https://stackoverflow.com/questions/9541541/b-tree-vs-bitmap-database-indexes
'programing' 카테고리의 다른 글
C++ 프로그램 내에 C 헤더 포함 (0) | 2023.07.07 |
---|---|
SELECT의 의미는 무엇입니까...XML PATH(' ', 1, 1)의 경우? (0) | 2023.07.07 |
Spring-Boot 실행 데이터.하나의 프로파일에서만 sql (0) | 2023.07.02 |
Vue에서 계산된 개체를 변경하는 방법은 무엇입니까? (0) | 2023.07.02 |
설정 도구 대 분산 도구: 분산 도구가 여전히 존재하는 이유는 무엇입니까? (0) | 2023.07.02 |