본문으로 건너뛰기

Top SQL

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

TOP SQL은 기존 SQL 통계 메뉴의 기능을 확장해 긴 기간 동안 데이터를 조회하고 분석할 수 있습니다. 최대 30일~최소 1분 단위로 조회할 수 있으며, 분석 지표를 탭 형태로 제공해 한눈에 볼 수 있습니다. 또한, 추이 차트를 추가하여 특정 시간의 SQL 발생 패턴을 쉽게 파악할 수 있습니다.

기본 화면 안내

Top SQL

  1. 시간에서 데이터를 조회할 시간과 날짜를 선택하세요.

    • 녹색 버튼을 클릭해 조회 시간을 선택하거나 날짜와 시간 텍스트 영역을 클릭하면 날짜와 시간을 옵션으로 선택할 수 있습니다.
  2. 인스턴스에서 데이터를 조회할 대상을 선택하세요.

  3. 필터 조건을 추가하세요. 필드에서 필터에 추가할 컬럼을 쉽게 검색하고 추가할 수 있습니다.

  4. 조회 건수에서 테이블에 표시할 건수를 설정하세요.

    • 데이터는 10~100건까지 테이블에 표시합니다.
  5. 검색 아이콘 버튼을 클릭하세요.

    • 조회한 내용을 CSV 형식의 파일로 다운받으려면 다운로드 아이콘 버튼을 클릭하세요.

    • 테이블 헤더의 각 컬럼을 클릭하면 선택한 컬럼을 기준으로 목록을 정렬할 수 있습니다.

필터링 조건 설정하기

원하는 데이터를 빠르게 찾기 위해 필드 조건을 추가하거나 필터 조건을 설정할 수 있습니다.

사이드 바 필드로 필터에 조건 추가하기

필드에서 필드명을 확인하고, 검색해 원하는 조건의 데이터를 조회할 수 있습니다.

  • 필드 검색 기능을 통해 원하는 필드를 빠르게 찾을 수 있습니다.

  • 필드 유형은 문자 아이콘 (문자 타입), 필드 아이콘 (숫자 타입) 아이콘으로 구분할 수 있습니다.

  1. 필드 목록에서 원하는 항목에 마우스를 올리면, 해당 필드의 데이터 타입에 따라 조건 아이콘이 나타납니다.

    • String(문자) 타입 필드 조건: =(포함), !=(미포함)

    • Number(숫자) 타입 필드 조건: ==(같음), (보다 크거나 같음), (보다 작거나 같음)

  2. 원하는 조건 아이콘을 클릭한 후, 값을 입력합니다.

  3. 적용 버튼을 클릭해 필드 조건을 추가합니다.

상단 옵션으로 필터에 조건 추가하기

  1. 필터 옵션에서 아이콘을 클릭하세요.

  2. 필터 키 항목에서 원하는 필터링 기준을 선택하세요.

    • 선택한 항목의 값이 문자에 해당한다면 포함(파란색), 미포함(빨간색) 조건을 선택할 수 있습니다.

      example

  3. 조건 항목에서 조건을 선택하고, 조건과 일치시킬 문자열 또는 숫자를 입력하세요.

  4. 적용 버튼을 클릭하세요.

    • 필터링 조건을 추가하려면 추가 버튼을 클릭한 후, 1 ~ 4를 반복하세요. 추가한 조건은 AND(&&) 조건으로 적용됩니다.

필터 조건 삭제하기

  • 특정 조건을 삭제하려면 필터 조건 오른쪽 삭제 아이콘 버튼을 클릭하세요.

  • 전체 조건을 삭제하려면 삭제 아이콘 전체 삭제 버튼 클릭하세요.

  • 필터 옵션에 적용된 조건을 빠르게 삭제하려면 버튼을 클릭하세요.

노트

sqlText에 'WhaTap'이 포함된 경우 제외하도록 기본 설정되어 있습니다.

WhaTap

필터 조건 수정하기

  1. 필터 옵션에 적용된 항목을 클릭하세요.

  2. 필터 수정하기 창에서 원하는 항목을 수정하고 적용 버튼을 클릭하세요.

Top SQL

Trends 차트의 SQL 통계 데이터 수집 주기와 데이터 조회 범위는 아래 기준에 따라 다릅니다.

  • 3시간 이하
    • SQL 통계 데이터 수집 주기 옵션이 1분으로 설정된 경우: 1분 간격으로 데이터 수집
    • SQL 통계 데이터 수집 주기 옵션이 1분으로 설정되지 않은 경우: 5분 간격으로 데이터 수집
  • 1일 이하: 5분 간격으로 데이터 수집
  • 30일 이하: 1시간 간격으로 데이터 수집
노트

SQL 통계 데이터 수집 주기 옵션 설정하기(차트 인터벌)

1분 단위의 서머리 데이터를 표시하려면 에이전트 버전과 에이전트 설정을 확인해야 합니다.

  1. 에이전트 버전 2.4.5 이상으로 업데이트하세요.

  2. whatap.conf 파일에 sqlstat_send_interval = 1 설정을 추가하세요.

쿼리별 수행 추이 확인하기

사용 구분별로 원하는 데이터를 분류해 조회하거나 정렬 순서를 변경할 수 있습니다. 원하는 탭을 클릭하세요.

테이블 항목별 가장 왼쪽에 ► 버튼을 선택하세요. 해당 쿼리문의 5분당 실행 횟수와 평균 수행 시간을 확인할 수 있는 차트가 나옵니다. 각 막대 그래프에 마우스를 오버하면 해당 시간의 수치를 확인할 수 있습니다.

정렬 기준설명
elapse avg (sec)평균 실행 시간이 가장 긴 값부터 정렬
execute count실행 횟수가 많은 순서대로 정렬
elapse sum (sec)총 실행 시간이 긴 값부터 정렬
elapse max (sec)최대 실행 시간이 긴 값부터 정렬
elapse wait쿼리의 대기 시간이 긴 순서대로 정렬
physical read디스크에서 읽은 데이터 블록이 많은 순서대로 정렬
session logical reads메모리에서 읽은 데이터 블록이 많은 순서대로 정렬

쿼리 미리보기

쿼리문 미리보기

조회된 결과 목록에서 마우스 포인터를 sql 컬럼 항목으로 가져가면 쿼리문을 미리 볼 수 있습니다.

쿼리 자세히 보기

조회된 결과 목록에서 query 컬럼 항목을 선택하면 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 등

상세 차트 확인하기

상세 차트 확인하기

데이터는 조회하는 시간에 따라 다른 주기로 가져옵니다. 조회 가능한 시간 범위는 1분(m1), 5분(m5), 1시간(h1) 단위로 제공됩니다. 최근 시간으로 다시 변경하려면, 최근 시간 아이콘 아이콘을 클릭하세요. 설정된 시간에 따라 데이터가 자동으로 조정됩니다.

상세 차트는 트렌드 차트와 동일하게 조회 시간에 따라 데이터의 주기가 달라지며, 드래그하여 조회 시간 범위를 조정할 수 있습니다.

상세 정보 확인하기

세션 상세 정보

차트의 막대 그래프를 선택하면 5분 동안의 통계 정보를 확인할 수 있는 세션 상세 정보 창이 나타납니다. 선택한 시간 동안의 SQL 실행 목록을 표시하며, 항목을 선택하면 새창과 함께 인스턴스 모니터링 메뉴로 이동합니다.

인스턴스 모니터링 메뉴에서는 선택한 시간대의 액티브 세션 테이블과 다양한 지표들의 추이를 확인할 수 있습니다.

테이블 컬럼 설정하기

테이블 헤더 컬럼을 감추거나 원하는 항목을 추가할 수 있습니다. 컬럼 순서를 변경할 수도 있습니다. 컬럼 아이콘 버튼을 선택하세요.

  • 설정을 완료한 다음에는 확인 버튼을 클릭해야 설정 사항이 테이블에 반영됩니다.

  • 컬럼명 검색에서 텍스트를 입력해 원하는 컬럼 항목을 검색할 수 있습니다. 입력한 텍스트와 매칭되는 컬럼 항목만 표시됩니다.

  • 이미지는 제품 또는 프로젝트, 메뉴에 따라 다를 수 있습니다.

컬럼 추가하기

표시할 컬럼 목록에서 테이블 헤더 컬럼으로 추가할 항목을 선택하세요. 모든 항목을 추가하려면 전체 선택을 선택하세요.

컬럼 삭제하기

표시할 컬럼 목록에서 삭제할 컬럼 항목의 체크 박스를 선택 해제하세요. 또는 표시 항목 목록에서 삭제할 항목의 오른쪽 삭제 아이콘 버튼을 클릭하세요.

컬럼 순서 변경하기

표시 항목 목록에 순서를 변경할 항목을 드래그해서 원하는 위치로 이동할 수 있습니다.

설정 사항 초기화하기

변경 사항은 모두 취소하고 초기화하려면 초기화 아이콘 초기화 버튼을 클릭하세요.