본문으로 건너뛰기

Wait 별 Top SQL

홈 화면 > 프로젝트 선택 > 통계 > Wait 별 Top SQL

Wait 별 Top SQL은 튜닝 우선순위를 빠르게 파악하는 데 중점을 두고 분석합니다. 특정 시간대에 가장 많은 대기 시간이 발생한 Wait Class와 Wait Event를 차트와 테이블로 한눈에 확인할 수 있으며, Top SQL 테이블에서 실행 횟수와 평균 시간을 비교할 수 있습니다.

기본 화면 안내

top wait sql

Wait Class 차트

클래스 차트 또는 범레를 클릭하면 해당 클래스가 필터에 적용됩니다. 차트나 범례를 다시 클릭하면 필터가 해제됩니다.

  • 차트 상단의 Wait Class 막대 차트는 현재 분석 기간의 전체 대기 시간 비중을 시각적으로 보여줍니다.

  • 선택된 필터는 태그 형태로 표시됩니다.

Wait Event 목록

클래스가 선택되지 않은 초기에 선택한 타임셀렉터 범위 중 발생 빈도가 가장 높은 이벤트를 기준으로 표시됩니다. Wait Class 필터가 적용되면 해당 클래스의 이벤트 목록이 표시됩니다.

Wait Event 목록에서 Wait Event를 선택하면, 해당 내역이 SQL List 필터에 추가됩니다.

시간대별 Wait Class의 분포 및 세션 수를 시각적으로 표시합니다. 특정 시간대의 대기 이벤트 증가 패턴을 확인할 수 있습니다. Wait(time), Wait(count), Latch, Enqueue, Stat, Cpu, Memory, Session Count의 분석 카테고리를 선택할 수 있습니다.

SQL List 목록

각 SQL 항목에 대해 Elapsed Time, CPU Time, Wait Time, Execute Count, Logical Reads 등 주요 실행 성능 지표가 함께 표시되어 빠른 비교 분석이 가능합니다.

  • 기본 상태(미선택 시): Elapsed Time이 가장 높은 50개 쿼리 표시

  • 클래스 선택 시: 선택한 클래스의 Wait Time이 가장 높은 50개 쿼리 표시

쿼리 자세히 보기

조회된 결과 목록에서 query 컬럼 항목을 선택하면 SQL 상세 창이 나타납니다. SQL 통계 보기 버튼을 클릭해, 해당 SQL 쿼리문과 관련한 통계 정보를 확인할 수 있는 SQL 통계 메뉴로 이동할 수 있습니다.

SQL 상세

SQL 상세 창의 탭은 다음과 같습니다.

  • Trend: 특정 SQL의 실행 시간, I/O, 대기 이벤트를 종합적으로 분석하여 성능 병목 지점을 빠르게 확인할 수 있습니다.

  • Runtime Plan: 선택된 SQL 쿼리의 실행 계획과 런타임 정보를 제공합니다. 실행 횟수, 평균 실행 시간, 평균 물리적 읽기 등 세부 정보를 제공합니다.

  • Explain Plan: 옵티마이저가 예측한 실행 계획을 보여줍니다. 비용, 작업, 객체 이름, 카디널리티 등의 정보를 제공합니다.

  • Plan History: 데이터베이스에서 실행된 SQL 쿼리의 실행 계획에 대한 이력을 확인할 수 있습니다.

  • Bind Capture: 데이터베이스에서 실행된 SQL 쿼리에 사용된 바인드 변수의 값을 확인할 수 있습니다. 이를 통해 쿼리 실행의 실제 내용을 확인할 수 있습니다.

    노트

    실시간 실행된 bind 값이 아닌 데이터베이스에 캡처된 값(v$sql_bind_capture)입니다. 건수가 많으면 100개까지 표시합니다.

Trend 탭

상단 차트에서 시간대별 Elapsed Time, I/O, Wait Time 추이를 시각화합니다. 하단 통계 테이블은 실행 누적 통계, Wait Class 비율, 주요 Wait Event를 한눈에 비교할 수 있습니다.

Elapsed Time

타임 셀렉터로 선택된 구간 동안의 CPU 사용 시간, Wait Class 소요 시간, Idle 시간 등을 합산하여 표시합니다.

예.

  • CPU Time: SQL 실행에 실제 CPU를 사용한 시간
  • Scheduler: 세션이 CPU를 기다린 시간
  • Idle: 실행되지 않고 대기하거나 유휴 상태인 시간(어떤 항목이 소요 시간이 가장 길었는지 직관적으로 확인할 수 있음)

Elapsed Time Trend

시간대별로 평균 Elapsed Time과 실행 횟수(Execution Count)를 5분 단위로 집계해 추세를 보여줍니다. 3시간 미만이라면 1분 단위로 집계해 보여줍니다.

특정 시점에서 Elapsed Time이 급증했는지, 실행 횟수 대비 응답 시간이 늘었는지 확인할 수 있어 성능 저하 시점을 빠르게 파악하는데 유용합니다.

I/O Trend

쿼리 실행 중 발생한 Logical ReadsPhysical Reads를 5분 단위로 보여줍니다. 3시간 미만이라면 1분 단위로 보여줍니다.

  • Logical Reads: 버퍼 캐시에서 데이터를 읽은 횟수

  • Physical Reads: 디스크에서 직접 데이터를 읽은 횟수로 캐시 효율성과 I/O 부하를 비교해 성능 병목 원인을 파악할 수 있음

Wait Time Trend

쿼리 실행 동안 발생한 Wait Event 소요 시간을 시간대별로 보여줍니다.

특정 시점에서 Wait Time이 치솟는다면, DB 자원 경합이나 I/O 지연이 발생했음을 의미합니다. 어떤 이벤트(락, I/O, 병렬처리 등)가 병목을 유발했는지 추적할 수 있습니다.

Total Statistics

선택 구간 동안의 SQL 실행 누적 통계를 보여줍니다.

예.

  • sorts(rows): 정렬된 총 행의 수
  • session logical reads: 세션 논리적 읽기 횟수
  • table scan blocks gotten: 테이블 스캔 시 읽은 블록 수
  • elapsed_time: 총 소요 시간
    SQL 실행이 리소스를 어떻게 사용했는지 집계된 데이터를 확인할 수 있습니다.

Total Wait Classes

SQL 실행 중 발생한 대기 시간(Wait Time) 을 Wait Class 단위로 합산한 값입니다. Wait Class별로 소요 시간이 많을수록 해당 영역이 병목 지점일 가능성이 높습니다.

예. Idle, Scheduler, User I/O, Concurrency 등

Top Wait Events

선택 구간에서 발생한 세부 Wait Event 상위 목록을 보여줍니다. Wait Class보다 더 세밀하게 어떤 이벤트가 성능에 가장 큰 영향을 주었는지 확인할 수 있습니다.

예. PX Deq: Execution Msg, resmgr:cpu quantum, direct path read 등