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
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
47 | 1. Library Cache Lock | balto | 2010.07.17 | 12803 |
46 | 8. Statspack / AWR | balto | 2010.06.13 | 12769 |
» | 10. V$SQL | 실천하자 | 2010.06.14 | 12682 |
44 | 6. RAC 캐시 퓨전 | 토시리 | 2010.07.19 | 12634 |
43 | 7. PL/SQL 함수의 특징과 성능 부하 | 실천하자 | 2010.07.12 | 12608 |
42 | 8. 블록 클린아웃 | 휘휘 | 2010.05.31 | 12288 |
41 | 5. Direct Path I/O | balto | 2010.07.10 | 12192 |
40 | 11. Static SQL 구현을 위한 기법들 | 실천하자 | 2010.07.05 | 12086 |
39 | 5. 바인드 변수의 중요성 | 실천하자 | 2010.06.28 | 11768 |
38 | 3. 데이터베이스 Call이 성능에 미치는 영향 | 토시리 | 2010.07.07 | 11667 |
37 | 4. Redo | 휘휘 | 2010.05.24 | 11316 |
36 | 4. 동시성 구현 사례 | 토시리 | 2010.06.07 | 10945 |
35 | 7. 세션 커서 캐싱 | 토시리 | 2010.06.29 | 10620 |
34 | 3. Deterministic 함수 사용 시 주의사항 | 실천하자 | 2010.07.19 | 10590 |
33 | 7. Consistent vs. Current 모드 읽기 | 휘휘 | 2010.05.31 | 10544 |
32 | 4. DBMS_XPLAN 패키지 | balto | 2010.06.06 | 10462 |
31 | 1. Call 통계 | 실천하자 | 2010.07.05 | 10446 |
30 | 6. 문장수준 읽기 일관성 | 토시리 | 2010.06.01 | 10434 |
29 | 2. Cursor_Sharing | balto | 2010.07.17 | 10215 |
28 | 3. 라이브러리 캐시 구조 | balto | 2010.06.28 | 9850 |