개요
Table Full Scan 수행 시에도 세그먼트의 익스텐트 정보를 읽기 위해 Current 모드 읽기가 발생할 수 있습니다. 본 글은 힌트를 이용해 강제로 Full Scan을 수행하고, 이때 발생하는 Current 모드 읽기(db block gets)를 확인합니다.
방법
Table Full Scan시 세그먼트의 익스텐트 정보
Table Full Scan은 단순 조회로 보일 수 있지만, 그 과정에서 세그먼트의 익스텐트 분포 정보 등을 확인하기 위해 Current 모드 읽기가 수반될 수 있습니다.
아래는 emp1 테이블에 대해 Full Scan을 유도하기 위해 FULL(emp1) 힌트를 사용한 예제입니다.
SQL> select /*+ full(emp1) */ * from emp1 where empno = 7788;
EMPNO ENAME DEPTNO SAL
------ ----------- -------- ----------
7788 TIBERO7788 8 7546894
1 row selected.
SQL
복사
SQL ID: 7dkrdnp2q5hr6
Child number: 133
Plan hash value: 1734378360
Execution Plan
--------------------------------------------------------
1 TABLE ACCESS (FULL): EMP1 (Cost:1883, %%CPU:1, Rows:1)
Predicate Information
--------------------------------------------------------
1 - filter: ("EMP1"."EMPNO" = 7788) (0.000)
NAME VALUE
------------------------------ -------
db block gets 42
consistent gets 4424
physical reads 4407
redo size 0
sorts (disk) 0
sorts (memory) 3
rows processed 1
SQL
복사
•
db block gets = 42 → 이는 세그먼트 익스텐트 정보를 포함한 일부 블록이 Current 모드로 읽혔음을 의미합니다.
•
consistent gets와 physical reads는 전체 테이블 범위를 읽은 비용을 보여주는 지표입니다.