[ORACLE] V$SQL

반응형

1. V$SQL

v$sql은 라이브러리 캐시에 캐싱되 있는 각 sql에 대한 수행 통계를 보여준다. v$sql은 쿼리가 수행을 마칠 때마다 갱신되며, 오랫동안 수행되는 쿼리는 5초마다 갱신이 이루어진다.

select sql_id, child_number, sql_text, sql_fulltext, parsing_schema_name,
		loads, invalidations, parse_calls, executions, fetches, rows_processed,
		cpu_time, elapsed_time,
		buffer_gets, disk_reads, sorts,
		first_load_time, last_active_time
from v$sql;
  • 라이브러리 캐시에 적재된 SQL 커서 자체에 대한 정보
  • 하드파싱 및 무효화 발생횟수, Parse, Execute, Fetch Call 발생 횟수, Execute 또는 Fetch Call 시점에 처리한 로우건수 등
  • CPU 사용 시간과 DB구간 소요시간 (micresecond)
  • 논리적 블록 읽기와 디스크 읽기, 그리고 소트 발생 횟수
  • 커서가 라이브러리 캐시에 처음 적재된 시점, 가장 마지막에 수행된 시점

 

2. 집중 튜닝이 필요한 스키마 선정에 도움이되는 쿼리

select parsing_schema_name "유저", count(*) "SQL 개수"
		, sum(executions) "수행횟수"
		, round(avg(buffer_gets/executions)) "논리적I/O"
		, round(avg(disk_reads/executions)) "물리적I/O"
		, round(avg(rows_processed/executions)) "처리건수"
		, round(avg(elapsed_time/executions/1000000),2) "평균소요시간"
		, count(case when elapsed_time/executions/1000000 >= 10 then 1 end) "악성SQL"
		, round(max(elapsed_time/executions/1000000),2) "최대소요시간"
from v$sql
where parsing_schema_name in ('test')
and last_active_time >= to_date('2022/07/10','yyyy/mm/dd')
and executions > 0
group by parsing_schema_name;
반응형