10. V$SQL
2010.06.14 08:46
수많은 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
, 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
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
67 | Front Page | 운영자 | 2010.05.17 | 154868 |
66 | 4. Prefetch | balto | 2010.07.10 | 28445 |
65 | 5. 오라클 Lock | 휘휘 | 2010.06.07 | 26368 |
64 | 2. DB 버퍼 캐시 | 휘휘 | 2010.05.24 | 21919 |
63 | 3. SQL 트레이스 | balto | 2010.06.06 | 21176 |
62 | 1. 기본 아키텍처 [1] | 휘휘 | 2010.05.23 | 19910 |
61 | 2. 트랜잭션 수준 읽기 일관성 | 휘휘 | 2010.06.07 | 19569 |
60 | 5. Undo | 토시리 | 2010.05.31 | 18665 |
59 | 11. Shared Pool | 실천하자 | 2010.05.31 | 18513 |
58 | 9. Static vs. Dynamic SQL [1] | balto | 2010.07.04 | 18350 |
57 | 4. Array Processing 활용 | 휘휘 | 2010.07.05 | 18252 |
56 | 1 장. 오라클 아키텍처 | 운영자 | 2010.05.20 | 17850 |
55 | 5. Fetch Call 최소화 | 휘휘 | 2010.07.05 | 16852 |
54 | 2. SQL 처리과정 | 휘휘 | 2010.06.28 | 15743 |
53 | 9. ASH(Active Session History) | 실천하자 | 2010.06.14 | 15608 |
52 | 3. 버퍼 Lock [1] | 휘휘 | 2010.05.24 | 15235 |
51 | 6. 바인드 변수의 부작용과 해법 | 실천하자 | 2010.06.28 | 14680 |
50 | 1. Explain Plan | 실천하자 | 2010.06.06 | 14666 |
49 | 8. PL/SQL 함수 호출 부하 해소 방안 | 토시리 | 2010.07.11 | 14031 |
48 | 7. Result 캐시 | 휘휘 | 2010.07.19 | 12970 |