메뉴 건너뛰기

bysql.net

10. V$SQL

2010.06.14 08:46

실천하자 조회 수:12672

수많은 SQL을 모두 튜닝 불가

Pareto's Law or 리처드 코치의 80/20 법칙 적용

    - 주기적으로 사용되는 상위 10% 이내의 프로그램만 집중적으로 튜닝해도 효과적


V$SQL

  • 개별 SQL 커서의 수행통계 분석 목적으로도 많이 활용
  • 집중 튜닝이 필요한 대상 SQL 선정 시 활용
  • 튜닝 전후 성능 향상도를 비교할 목적으로 통계 낼 시 활용
  • 라이브러리 캐시에 캐싱돼 있는 각 Child 커서에 대한 수행통계 표현
  • v$sqlarea는 Parent 커서에 대한 수행 통계 표현 (자세한 커서정보는 4장)
  • 쿼리가 수행을 마칠 때마다 갱신
  • 긴 수행의 쿼리는 5초 단위로 갱신
  • 통계치 값은 누적 값 표현 ☞ SQL 수행 횟수로 나눈 평균값 (SQL 한번 당 일량과 시간)을 이용한 분석 필요
SELECT sql_id, child_number, sql_text, sql_fulltext, parsing_schema_name
         , sharable_mem, persistent_mem, runtime_mem
         , loads, invalidations, parse_calls, executions, fetches, rows_processed
         , cpu_time, elapsed_time
         , buffer_gets, disk_reads, sorts
         , application_wait_time, concurrency_wait_time
         , cluster_wait_time, uwer_io_wait_time
         , first_load_time, last_active_time
from v$sql


line 1     라이브러리 캐시에 적재된 SQL 커서 자체에 대한 정보

line 2     SQL커서에 의해 사용되는 메모리 사용량

line 3, 4  하드파싱 및 무효화 발생횟수, Parse, Execute, Fetch Call 발생 횟수 및 처리 로우 건수

line 5     SQL 수행하면서 사용된 CPU Time과 소요시간(microsecond)

line 6     SQL 수행하면서 발생한 논리적 블록 읽기와 디스크 읽기, 소트 발생 횟수

line 7, 8  SQL 수행 도중 대기 이벤트 때문인 지연 발생 시간(microsecond)

line 9     커서가 라이브러리 캐시에 처음 적재된 시점, 가장 마지막에 수행된 시점



Top SQL 기준
  • Parse Calls
  • Executions
  • Buffer Gets
  • Disk Reads
  • Elapsed Time
  • CPU Time
  • Wait Time
  • Version Count
  • Sharable Memory

Colored SQL (오라클 11g 부터 추가) - 수행통계가 AWR에 주기적으로 수집되도록 마킹

  • AWR 수집 시 Top SQL 선정 기분과 상관없이 SQL 수행 통계 저장
  • 스냅샷 시점에 캐시에서 밀려나고 없는 SQL 정보는 저장 X