데이터베이스 연구실.log

Smart Scan

셀의 조건 및 컬럼 선별과 전송량 감소, 실행계획과 통계 및 대기 이벤트의 해석과 VM 시뮬레이션의 한계

Smart ScanPredicate FilteringColumn ProjectionSTORAGE FULLcell smart table scan

#핵심 요약

Smart Scan은 스토리지 셀에서 지원되는 조건에 맞는 행과 필요한 컬럼을 선별해 DB 서버로 반환하는 처리임

셀이 읽은 데이터량과 DB 서버로 반환한 데이터량은 다름
반환량이 줄어도 디스크 읽기가 같은 비율로 줄지는 않음

실행계획의 STORAGE FULL 표시와 함께 통계와 대기 이벤트를 확인해 실제 오프로딩 발생 여부를 판단함

#개념과 동작 원리

#행과 컬럼의 선별

실습 종합 설명은 6월 완료 거래에서 고객번호와 금액만 조회하는 가정으로 두 선별 작업을 나눔

처리 실습 예시 줄이는 대상
Predicate Filtering 기간, 완료 상태 조건으로 행 선별 조건에 맞지 않는 행의 반환
Column Filtering / Projection 고객번호, 금액 컬럼만 반환 결과에 쓰지 않는 컬럼의 전송

실습의 처리 흐름은 스캔 요청, Storage Index의 불필요한 영역 제외, 플래시, 디스크 읽기, 셀의 조건, 컬럼 선별, DB 서버 반환으로 설명됨
Storage Index는 읽을 필요가 없는 영역을 제외하고 Smart Scan은 읽은 데이터에서 반환할 내용을 선별함

실습 예시의 요청량, 제외량, 남은 읽기량에는 단순 차감으로 일치하지 않는 수치가 있음
반올림이나 서로 다른 기준 때문인지는 기재 없음

#적용되는 스캔과 확인 지표

Smart Scan은 direct path로 읽는 큰 스캔에서 동작하며, 인덱스로 블록을 하나씩 읽는 접근에는 적용되지 않음
Fast Full Index Scan은 지원 대상에 들어갈 수 있으므로 인덱스라고 모두 오프로딩이 안 되는 것은 아님

지표 뜻 주의
TABLE ACCESS STORAGE FULL 스토리지 처리 가능성을 반영한 접근 경로 이것만으로 실제 오프로딩이 일어났다고 볼 수 없음
eligible 통계 오프로딩 대상 바이트 반환량이나 속도 개선과는 다른 값임
returned by smart scan 통계 Smart Scan으로 반환한 바이트 이것만으로 SQL 응답 시간을 설명할 수 없음
cell smart table scan 대기 셀 스캔을 기다린 시간 대기가 크다고 성능이 좋은 것은 아님

#필수 명령어 또는 SQL

#관련 통계 조회

SQL*Plus (실습 계정, 동적 성능 뷰 조회 권한)조회만 함
select inst_id, name, value
  from gv$sysstat
 where name in ('cell physical IO bytes eligible for predicate offload',
                'cell physical IO interconnect bytes returned by smart scan',
                'cell physical IO bytes saved by storage index')
 order by inst_id, name;

결과 해석: 실습에서는 양쪽 인스턴스의 세 통계가 모두 0이라고 기록하고 셀이 없는 VM에서 실제 오프로딩이 발생하지 않았다고 설명함
실제 Exadata 장비의 정상 여부를 판단할 기준값은 아님

#실습의 반환 비율 계산

SQL*Plus (실습 계정, 동적 성능 뷰 조회 권한)조회만 함
select round(100 * r.value / nullif(e.value, 0), 2) as "오프로드 효율(%)"
  from v$sysstat e, v$sysstat r
 where e.name = 'cell physical IO bytes eligible for predicate offload'
   and r.name = 'cell physical IO interconnect bytes returned by smart scan';

결과 해석: 실습 VM은 분모인 대상 바이트가 0이어서 NULLIF에 의해 결과가 NULL로 기록되어 있음

‘오프로드 효율(%)’의 계산식은 반환 바이트를 대상 바이트로 나눈 비율임
절감률이나 실행 시간 개선률은 아님
같은 실행 구간의 전후 증가량과 각 통계의 바이트 기준을 확인함

#사용 조건과 주의사항

숨은 파라미터 변경은 수업용 VM으로 제한함

실제 실행 여부는 이벤트 이름뿐 아니라 통계와 대기 발생 기록으로 확인함

Full Scan과 인덱스 중 유리한 접근 경로는 조회량, 데이터 분포, 실행 비용에 따라 달라짐

압축 저장 크기와 반환 데이터는 형식이 다를 수 있어 바이트 비율만으로 조건에 맞는 행의 비율이나 성능을 판단할 수 없음

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기