[3) 오라클 성능 관리]5. V$SYSSTAT

Yu River·2022년 5월 31일
0
post-thumbnail

V$SYSSTAT

(1) V$SYSSTAT란?

  • 인스턴스 기동시 현재까지 누적된 수행 통계치를 시스템 레벨로 확인하고자 할 때 사용하는 뷰이다.
  • V$SYSSTAT 값은 누적된 값으로 두 구간 사이의 변화량을 구해 SQL 수행 도준에 내부적으로 어떤 일들이 발생했는지 판명해야 한다.

1. 통계 뷰 종류

  • 시스템 레벨 단위 :: V$SYSSTAT
  • 개별 세션별 단위 :: V$SESSTAT
  • 본인 세션 단위 :: V$MYSTAT

2. [예시] AutoTrace의 Statistics 옵션에서 사용했던 통계 항목 조회하기

SQL> SELECT NAME, VALUE
     FROM V$SYSSTAT
     WHERE STATISTIC# IN (7, 47, 50, 54, 134, 335, 336, 337, 341, 342);
                ============================================================================
                NAME                                                                  VALUE
                ---------------------------------------------------------------- ----------
                user calls                                                            53079
                physical read total bytes                                         473201664
                physical write total bytes                                        287825920
                spare statistic 3                                                         0
                commit cleanout failures: cannot pin                                      0
                TBS Extension: bytes extended                                      10485760
                total number of times SMON posted                                        18
                SMON posted for undo segment recovery                                     0
                SMON posted for dropping temp segment                                     0
                segment prealloc tasks                                                    0
                ============================================================================

(2) Ratio 기반으로 성능 분석하기

  • Buffer NoWait % : 버퍼블록을 읽으려 할 때, buffer busy waits 대기 없이 곧바로 읽기에 성공한 비율이다.
  • Redo NoWait % : Redo 로그를 기록할 공간을 요청하지 않고 곧바로 Redo 엔트리를 기록한 비율이다.
    • 이 비율이 낮으면 로그 스위칭이 느리거나 너무 자주 발생함을 의미한다.
  • Buffer Hit % : 디스크 읽기를 수반하지 않고 버퍼캐시에서 블록찾기에 성공한 비율이다.
  • Latch Hit % : 래치 경합없이 첫번째 시도에서 곧바로 래치를 획득한 비율이다.
  • `Library Hit %ㅊ
    • 라이브러리 캐시에 이미 적재된 SQL커서를 실행할 때 커서가 Heap영역에서 찾아질 때의 Hit 성공 비율이다.
    • 라이브러리 캐시에 이미 적재된 오브젝트 정보를 읽으려할 때 오브젝트 정보가 Heap영역에서 찾아질 때의 Hit 성공 비율이다.
    • 이 때 hit율은 Get hit율과 Pin hit율로 나누어진다.
    • Get hit율은 Parse 단계와 관련이 있으며 이 수치가 낮다면 하드파싱 또는 최초 로드가 발생한 경우이다.
  • Soft Parse % : 실행계획이 라이브러리 캐시에서 찾아져 하드파싱을 일으키지 않고 SQL을 수행한 비율이다.
  • Execute to Parse % : Parse Call없이 곧바로 SQL을 수행한 비율이다.
    • 즉, 커서를 애플리케이션에서 캐싱한 채 반복 수행한 비율로 n-Tier에서 이 값이 일반적으로 값이 낮게 나타난다.
  • Parse CPU to Parse Elapsd % : 파싱 총 소요 시간 중 CPU time이 차지한 비율이다.
    • 파싱에 소요된 시간 중 실제 일을 수행한 시간 비율이다.
    • 이 값이 낮으면 대기 시간이 많았다는 의미로서 Shared Pool과 라이브러리 캐시 경합이 많았다는 것을 의미하며 대개 하드파싱 부하때문이다.
    • 초당 하드파싱 횟수가 거의 나타나지 않는 상황에 이 Ratio가 낮은 수치를 기록한다면 Parse Call 자체가 많아 발생하는 경합이다.
  • % Non-Parse CPU : SQL을 수행하면서 사용한 전체 CPU time중 파싱 이외의 작업이 차지한 비율 이다.
    • 이 비율이 낮으면 파싱에 소비되는 CPU Time이 많은 것이다.따라서 파싱부하를 줄이도록 애플리케이션을 개선해야한다.
  • In-memory Sort % :: 전체 소트 수행 횟수에서 In-Memory 방식으로 소트한 비율이다.
  • Memory Usage % :: Shared Pool내에서 현재 사용중인 메모리 비중이다.
  • % SQL with executions>1 : 전체 SQL 개수에서 두번이상 수행된 SQL이 차지하는 비중이다.
    • 이 비율이 낮으면 Literal 상수값을 이용하는 쿼리 수행 빈도가 높다는 것을 의미한다.
  • % Memory for SQL w/exec>1 : 전체 SQL이 차지하는 메모리 중 두번이상 수행된 SQL이 차지하는 메모리 비중이다.
    • 이 비율이 낮으면 Literal 상수값을 사용하는 쿼리에 의해 Shared Pool이 낭비되고 있음을 의미한다.
profile
도광양회(韜光養晦) ‘빛을 감추고 어둠속에서 힘을 기른다’

0개의 댓글