비용기반의 오라클 원리 (2009년)
비트맵인덱스 - CPU costing 0 0 31,810

by 구루비스터디 비트맵 인덱스 bitmap index [2023.09.23]


III CPU costing

  • CPU costing을 활성화했을 때 어떤 일이 일어나는가?



select
	/*+ index(t1) */
	small_vc
from
	t1
where
	n4	= 2
;
--------------------------------------------------------------------------------------
| Id  | Operation                    | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |       |   400 |  5600 |   127   (1)| 00:00:02 |
|   1 |  TABLE ACCESS BY INDEX ROWID | T1    |   400 |  5600 |   127   (1)| 00:00:02 |
|   2 |   BITMAP CONVERSION TO ROWIDS|       |       |       |            |          |
|*  3 |    BITMAP INDEX SINGLE VALUE | T1_I4 |       |       |            |          |
--------------------------------------------------------------------------------------

select
	small_vc
from
	t1
where
	n6	= 2
;
-------------------------------------------------------------------------------------
| Id  | Operation                   | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |       |   400 |  5600 |    54   (0)| 00:00:01 |
|   1 |  TABLE ACCESS BY INDEX ROWID| T1    |   400 |  5600 |    54   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN          | T1_I6 |   400 |       |     9   (0)| 00:00:01 |
-------------------------------------------------------------------------------------
--> 책과 다름


  • 비트맵 쿼리의 비용은 14가 증가 했지만, B-tree 쿼리의 비용은 겨우 1이 증가했다.(p.243, 10.2.0.3에서는 다름)
  • B-tree 쿼리의 비용은 약 45개의 테이블 블록 방문을 근거로 계산된 것이며, 비트맵 쿼리의 비용은 약 100개의 테이블 블록 방문을 근거로 계산된 것이지만 실제 테이블 블록을 방문할 때 발생하는 일량은 인덱스에 상관없이 똑같다.
  • 비용의 차이 대부분은 비트맵에 의한 것이 틀림없다(그렇다고 가정)


10053 트레이스

  ****** trying bitmap/domain indexes ******
  Access Path: index (AllEqRange)
    Index: T1_I4
    resc_io: 1.00  resc_cpu: 8171
    ix_sel: 0.04  ix_sel_with_filters: 0.04
    Cost: 1.00  Resp: 1.00  Degree: 0
  Access path: Bitmap index - accepted
    Cost: 126.57 Cost_io: 126.27 Cost_cpu: 1062271 Sel: 0.04
    Not believed to be index-only
  Best:: AccessPath: IndexBitmap
         Cost: 126.57  Degree: 1  Resp: 126.57  Card: 400.00  Bytes: 0

  Access Path: index (AllEqRange)
    Index: T1_I6
    resc_io: 54.00  resc_cpu: 573408
    ix_sel: 0.04  ix_sel_with_filters: 0.04
    Cost: 54.16  Resp: 54.16  Degree: 1
  ****** trying bitmap/domain indexes ******
  Best:: AccessPath: IndexRange  Index: T1_I6
         Cost: 54.16  Degree: 1  Resp: 54.16  Card: 400.00  Bytes: 0

  • p.244 (추측성 글로서 최근의 버젼과는 맞지 않음)


"코어 오라클 데이터베이스 스터디모임" 에서 2009년에 "비용기반의 오라클 원리 " 도서를 스터디하면서 정리한 내용 입니다.

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

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

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

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