V$MYSTAT 뷰

2023. 4. 19.·Oracle/Performance

아래는 Database Reference의 V$MYSTAT 뷰에 대한 내용입니다. 참고로 병렬 쿼리는 현재 세션이 QC 역할을 담당하고, 별도의 세션의 PX 서버가 작업을 수행합니다. 병렬 쿼리의 성능 분석에 V$MYSTAT 뷰를 활용하려면 PX 서버의 통계 값이 V$MYSTAT 뷰의 통계 값에 포함되어야 합니다. 결론부터 말하면 V$MYSTAT 뷰와 V$SESSTAT 뷰의 통계 값은 PX 서버의 통계 값을 포함합니다. 참고로 V$SESSION_EVENT 뷰의 대기 이벤트 정보는 PX 서버의 대기 이벤트 정보를 포함하지 않습니다.

 

V$MYSTAT contains statistics on the current session.

 

테스트를 위해 아래와 같이 테이블을 생성하겠습니다.

-- 1
DROP TABLE t1 PURGE;
CREATE TABLE t1 (c1) AS SELECT ROWNUM FROM XMLTABLE ('1 to 1000000');

 

아래와 같이 쿼리를 수행하여 consistent gets의 델타 값을 계산하겠습니다. 직렬로 수행한 2-2번 쿼리는 1,527개, 병렬로 수행한 2-3번 쿼리는 1,572개의 블록을 읽습니다. 참고로 V$MYSTAT 뷰 대신 V$SESSTAT 뷰를 사용해도 동일한 결과를 얻을 수 있습니다.

-- 2-1
SELECT b.value FROM v$statname a, v$mystat b WHERE a.name = 'consistent gets' AND b.statistic# = a.statistic#;
-- SELECT b.value FROM v$statname a, v$sesstat b WHERE a.name = 'consistent gets' AND b.statistic# = a.statistic# AND b.sid = USERENV ('SID');

VALUE
-----
   45

1개의 행이 선택되었습니다.

-- 2-2
SELECT /* TEST1 */ /*+ GATHER_PLAN_STATISTICS */ COUNT (*) AS c1 FROM t1;

1개의 행이 선택되었습니다.

SELECT b.value FROM v$statname a, v$mystat b WHERE a.name = 'consistent gets' AND b.statistic# = a.statistic#;
-- SELECT b.value FROM v$statname a, v$sesstat b WHERE a.name = 'consistent gets' AND b.statistic# = a.statistic# AND b.sid = USERENV ('SID');

VALUE
-----
 1572 -- 1527 = 1572 - 45

1개의 행이 선택되었습니다.

-- 2-3
SELECT /* TEST2 */ /*+ GATHER_PLAN_STATISTICS PARALLEL(2) */ COUNT (*) AS c1 FROM t1;

1개의 행이 선택되었습니다.

SELECT b.value FROM v$statname a, v$mystat b WHERE a.name = 'consistent gets' AND b.statistic# = a.statistic#;
-- SELECT b.value FROM v$statname a, v$sesstat b WHERE a.name = 'consistent gets' AND b.statistic# = a.statistic# AND b.sid = USERENV ('SID');

VALUE
-----
 3126 -- 1554 = 3126 - 1572

1개의 행이 선택되었습니다.

 

앞서 수행한 쿼리의 런타임 실행 계획을 살펴보면 2-2, 2-3번 쿼리의 Buffers 값이 consistent gets 값과 같은 것을 확인할 수 있습니다. 참고로 3-3번 실행 계획의 1, 2번 오퍼레이션은 QC, 4~6번 오퍼레이션은 PX 서버에 의해 수행됩니다.

-- 3-1
SELECT sql_id, sql_text, executions FROM v$sql WHERE sql_text LIKE 'SELECT /* TEST%';

SQL_ID        SQL_TEXT                                                                             EXECUTIONS
------------- ------------------------------------------------------------------------------------ ----------
7vbgr6sbd548a SELECT /* TEST1 */ /*+ GATHER_PLAN_STATISTICS */ COUNT (*) AS c1 FROM t1                      1
9bnqthrvhymu4 SELECT /* TEST2 */ /*+ GATHER_PLAN_STATISTICS PARALLEL(2) */ COUNT (*) AS c1 FROM t1          1

2 행이 선택되었습니다.

-- 3-2
SELECT plan_table_output FROM TABLE (DBMS_XPLAN.DISPLAY_CURSOR ('7vbgr6sbd548a', NULL, 'ALLSTATS'));

---------------------------------------------
| Id  | Operation          | Name | Buffers |
---------------------------------------------
|   0 | SELECT STATEMENT   |      |    1527 | -- 1527
|   1 |  SORT AGGREGATE    |      |    1527 |
|   2 |   TABLE ACCESS FULL| T1   |    1527 |
---------------------------------------------

-- 3-3
SELECT plan_table_output FROM TABLE (DBMS_XPLAN.DISPLAY_CURSOR ('9bnqthrvhymu4', NULL, 'ALLSTATS'));

-----------------------------------------------------
| Id  | Operation              | Name     | Buffers |
-----------------------------------------------------
|   0 | SELECT STATEMENT       |          |       5 | -- 1554 = 1549 + 5
|   1 |  SORT AGGREGATE        |          |       5 |
|   2 |   PX COORDINATOR       |          |       5 |
|   3 |    PX SEND QC (RANDOM) | :TQ10000 |       0 |
|   4 |     SORT AGGREGATE     |          |    1549 |
|   5 |      PX BLOCK ITERATOR |          |    1549 |
|*  6 |       TABLE ACCESS FULL| T1       |    1549 |
-----------------------------------------------------
저작자표시 비영리 변경금지 (새창열림)
'Oracle/Performance' 카테고리의 다른 글
  • Hash Rollup
  • SQL Analysis Report
  • WITH 절에 대한 FPD 쿼리 변환 (WCFPD)
  • Lock-Free Reservation #2
정희락
정희락
2007년부터 Oracle Database 성능 최적화에 관심을 가져왔습니다. 현재 한국오라클 Engineered Systems Solution Engineering 팀에서 Solution Engineer로 근무하고 있습니다. 이 블로그는 개인적인 연구 목적으로 운영되며 Oracle 사의 공식적인 입장을 대변하지 않습니다.
  • 정희락
    TunA
    정희락
  • 전체
    오늘
    어제
    • 분류 전체보기 (204)
      • Oracle (176)
        • SQL (36)
        • PLSQL (10)
        • Performance (74)
        • Administration (37)
        • Installation (3)
        • Utilities (1)
        • JSON (8)
        • Vector (7)
      • Exadata (15)
      • SQL*Plus (2)
      • Linux (5)
      • Resources (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 도서

    • 불친절한 SQL 프로그래밍
    • 불친절한 PL/SQL 프로그래밍
  • 링크

    • Connor McDonald
    • Frits Hoogland
    • Jonathan Lewis
    • Julian Dontcheff
    • Julian Dyke
    • Kun Sun
    • Maria Colgan
    • Martin Bach
    • Mike Dietrich
    • Tanel Poder
  • 공지사항

  • 인기 글

  • 태그

    12c
    19c
    21c
    23ai
    case study
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
정희락
V$MYSTAT 뷰
상단으로

티스토리툴바