오라클 EXADATA

EXADATA Developer - 12

n.han 2017. 2. 16. 15:38

EXADATA Developer - 12
> ADO (Automatic Data Optimization)
  - heat map
    : 데이터가 어떻게 조회가 되고, 관리가 되는 지 추적.
    : 어떤 데이터가 3개월 동안 한번도 조회가 되지 않음 -> 잘 쓰지 않는 데이터다. -> 다른 곳으로 이동 || 압축
> direct insert vs conventional insert
  1. conventional insert
    1) Disk에 insert가 가능한 block을 찾는다.
    2) 찾은 block들을 DB Buffer cache에 올린다.
    3) DB Buffer Cache에 row를 insert하고,
    4) dirty cache들을 처리(disk에 변경점을 업데이트)한다.
  2. direct insert
    1) 바로 Disk에 Write
    - insert 문에 힌트를 사용하면 (/*+APPEND */) direct insert된다. (???)
> _ag 파일의 chapter 8 - Page 16. direct path insert로 하는 경우, 두번째에 속도가 훨씬 빠름.(Flash Cache!)
> Index Usage (Exa 환경에서의 Index 사용 가이드)
  - index가 테이블에 많을 때 단점.
    1) DML 작업할 때 성능이 느려짐.
    2) Storage space 낭비
    -> 불필요한 index들을 줄이는 것이 중요.
  - Exa 환경에선 smart scan이 있으니, 언제 index를 사용할 것인지 여부 판단이 더 어려움.
  - Index를 Invisible로 바꿔도, index는 정상 유지 되며, session 별로 invisible index에 대해서 visible로 설정할 수 있음.
    (invisible로 하면 사용하지 않겠다.)
> Exadata I/O Latency Capping
  - storage 1에 write했는데, 기다려도 오지 않으면 다른 stroage로 reroute.
  - 그 기다리는 시간은 Cell Server에 지정할 수 있음. 
> Exadata Smaert Scan: Overview
  1. Full table scan
  2. predicate filtering 
  3. colunmn filtering
  4. Bloom filter
> reverse key
  - 테이블에 유니크 인덱스를 만들건데, sequence를 통해서 하려고 한다.
  - index의 특징이 sorting이 되어 있음.
  - sorting 되어 있으니, 777, 778, 779 index에 해당하는 row을 접근하는 block이 hot block됨.
  - 따라서 index를 reverse로 저장하여 (777, 877, 977로) block I/O를 균등하게.
> pseudocolumn
  - 테이블의 물리적인 컬럼이 아닌, DB의 내부 정보를 보여주기 위한 Column.
> virtual column
  - run time 시에 column 값이 결정됨.
> Smart Scan Execution Plan: Example
  - Predicate Information을 보니, storage에서 filter처리하는 데이터도 있고, DB가 filter 처리하는 데이터도 有. (그냥 filter로 써져 있으면 DB가 하는 것)
> Other Situations Affecting Smart Scan
  - Smart Scan이 발생하지 않을 수 있는 경우들.
  1. Not sure that a block is current.
  2. row migration, row chaining.
  3. I/O for dynamic sampling.
    - dynamic sampling
    : cost를 계산하기 위해서 optimizer 통계 필요. (CBO (Cost Based Optimization))
    : 실행 계획은 parsing time에 짜는데, 통계가 없다. 그런 경우 dynamic sampling을 함.
    : optimizer_dynamic_sampling이라는 parameter의 VALUE 값만큼의 block을 가지고 와서 cost를 계산.
  4. Cell Node의 CPU 자원이 부족한 경우.
  5. DB Buffer에 있는 경우.
> Performance data
  - SQL을 처리하는데 사용한 리소스
  - 통계의 성능 지표(Performance data)의 예 : physical read, logical reads
  - 통계 View 참조(v$sysstat)
  - wait event
    : SQL을 처리하는데 발생한 대기 상황
    : 예 : Buffer busy waits. (원하는 데이터를 찾았는데,사용을 못하고 기다리고 있음)
    : v$system_event를 참조.
    > DB File sequential read
      - Index를 통해서 읽을 때 발생하는 wait event
    > DB File scattered read
      - multi block I/O로 읽을 때 발생하는 wait event
  - Shared Pool > Library Cache에 저장된 SQL문을 V$SQL을 통해서 확인할 수 있음.

'오라클 EXADATA' 카테고리의 다른 글

EXADATA Developer - 13  (0) 2017.02.17
EXADATA Developer - 11  (0) 2017.02.16
EXADATA Developer - 10  (0) 2017.02.15
EXADATA Developer - 9  (0) 2017.02.15
EXADATA Developer - 8  (0) 2017.02.14