Optimizing Oracle Optimizer (2011년)
Star-Transformation 과 Bitmap Index 0 0 2,519

by 구루비스터디 Transformation Star-Transformation [2018.07.14]


Star Transformation과 Bitmap Index

  • Star Schema를 구성하려면 Dimension Table이 Fact Table과 Foreign Key관계를 가져야 함
  • 각 Dimension Key를 Bitmap 인덱스로 생성해야 함
  • Star Transformation을 사용하려면 Star Transformation_ENABLED Parameter값을 True로 변경하여야 함

select /*+ gather_plan_statistics */
    d1.value as area,
    d2.value as code,
    sum(f.value1) as sum_value1,
    max(f.value2) as max_value2,
    count(*) as counts
from
    t_fact f,
    t_dim1 d1,
    t_dim2 d2
where
    f.dim1_key = d1.dim1_key and
    f.dim2_key = d2.dim2_key and
    d1.value like 'area1%' and
    d2.value = 'code1'
group by
    d1.value, d2.value
;


  • d2.value = 'code1' 에 해당하는 Data를 Fact Table에서 찾기 위해 Dimension 2 테이블을 Lookup하고 Bitmap Operation을 통해 Fact 테이블을 읽음
  • d1.value like 'area1%'에 해당하는 Data를 Fact Table에서 찾기 위해 Dimension 1 테이블을 Lookup하고 Bitmap Operation을 통해 Fact 테이블을 읽음
  • 두 결과를 bitmap 연산을 이용해 공통된 Data를 Fact Table에서 추출함
  • 위 결과에서 나온 Data를 Dimension 1과 Dimension 2에서 각각 Hash Join을 수행해서 최종 결과를 추출함


  • Bitmap 인덱스를 이용해 Fact 테이블에 만족하는 데이터를 가지고 온 후 Dimension 테이블과 다시 조인하는 방식으로 Dimension 테이블을 두번씩 Access함
  • Dimension 테이블은 일반적으로 작으므로 Fact Table에서 효율적으로 데이터를 추출할 수 있다는 점에서 두번 Access의 부하는 상쇄됨
"데이터베이스 스터디모임" 에서 2009년에 "OPTIMIZING ORACLE OPTIMIZER " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3932

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입