본문 바로가기

Database

[HANA] Column store index

HANA Index Types

  • Primary key index

    • 대부분의 테이블에는 primary key 존재 -> 개별 행마다 고유한 식별자 제공
    • 보통 여러 개의 attribute로 구성
    • Column store에서는 각 primary key를 위해 자동으로 여러개의 인덱스를 생성
      • A Table with primary key (MANDT, KNR, RNR)
        -> 분리된 inverted index on MANDT, on KNR, on RNR
    • Column dictionary가 이미 정렬되어 있는데 인덱스가 필요한 이유는?
      • Dictionary를 읽은 후에 결국은 Attribute Vector를 모두 읽어야 함
      • 이를 개선하기 위한 inverted index

 

  • Secondary Index

    • 각 행별로 고유 식별자를 제공하고 하나 이상의 여러 인덱스에 의해 지원되는 Primary key와는 별개로 임의의 수의 Secondary index 생성 가능
    • Uniqeue and non-unique index 모두 지원됨

 

  • Multi-Colum Index
    • 3가지 종류
      • Inverted value index  --> Default index
        • Concatenation string of all values of the attributes for each individual row
        • Column Stoe에서만 사용됨
      • Inverted hash index
        • Inverted value index와 같이 key를 구성하는 경우 value값들이 너무 긴 겨우에는 메모리 과소비 가능 -> 이를 위해서 concated value를 hash로 변경하여 사용
        • 메모리 과소비는 어느정도 줄임 -> 성능상의 이점은 다른 이야기
        • Internal key column의 dictionary에 이렇게 생성된 hash 값이 저장됨
      • Inverted individual index
        • Column store 테이블의 하나 이상의 컬럼을 가진 index 중 특수한 type으로 concatenate를 수행하지 않음
        • Light-weight inverted index structure를 가짐 (개별 컬럼으로 관리)

 

  • When to create Indexes
    • Indexes are particularly useful when a query contains HIGHLY SELECTIVE predicates that help to reduce the intemediate results quickly.

 

 

 

 

Column Store JOIN Operation

  • 다음 쿼리를 수행 하는 경우
    SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.b WHERE a IN ('B','C');
  • 처리방식









      > Full Scan이 수행되어야 함 -> 만약에 여기서 Index가 있다면?













 

  • Join Key Index usage decision
    • Use the index if attribute has to look up a small number of selective values
    • DO NOT use the index if the results are shrunk by filter condition or Values are unselective

'Database' 카테고리의 다른 글

[HANA] Parameter 정리  (0) 2019.04.26
[HANA] HANA Temporary Table  (0) 2019.04.23
[HANA] In-Memory Computing 기본-2  (0) 2019.04.21
[HANA] In-Memory Computing 기본-1  (1) 2019.04.21
[HANA] Calculation View  (0) 2019.04.20