Top SQL
조회 기간 동안의 Top SQL 목록을 제공합니다. 에이전트가 수집한 Active Session 내의 SQL을 기반으로 실행 횟수, 수행 시간, 대기 시간 등의 지표를 와탭이 자체 산출한 SQL 통계입니다.
- 최소 1분 ~ 최대 30일 범위로 조회할 수 있어 장기 분석에 적합합니다.
- 추이 차트를 통해 특정 시간대의 SQL 발생 패턴을 시각적으로 파악할 수 있습니다.
- 리터럴 값을 제외한 SQL을 기준으로 통계를 산출합니다.
- DBX 에이전트 2.4.5 버전 이상이 필요합니다.
SQL 통계(DB)와 차이점
| 구분 | Top SQL | SQL 통계(DB) |
|---|---|---|
| 데이터 소스 | 에이전트가 수집한 Active Session | DB의 performance_schema 뷰 |
| 통계 산출 | 와탭 자체 산출 | DB가 제공하는 통계를 그대로 수집 |
| 별도 DB 설정 | 불필요 | performance_schema 활성화 및 권한 부여 필요 |
| 주요 지표 | 실행 횟수, 수행 시간(avg/max/sum) | 실행 횟수, 수행 시간, Row 처리, 인덱스 효율, 임시 테이블, 정렬 등 |
| 조회 범위 | 1분 ~ 30일 | 시간/날짜 단위 |
| 추이 차트 | 제공 | 미제공 |
사전 설정
Top SQL 분석 기능을 사용하려면 Agent 설정이 필요합니다.
Agent 설정
별도 설정 없이 5분 단위 통계가 기본 제공됩니다. 보다 정밀한 1분 단위 분석이 필요한 경우, whatap.conf에 다음 설정을 추가합니다.
sqlstat_send_interval=1
| 설정 항목 | 타입 | 기본값 | 설명 |
|---|---|---|---|
sqlstat_send_interval | int | 5 | SQL 통계 데이터를 생성하고 전송하는 주기(분)로 1 또는 5로 설정할 수 있음 |
TOP SQL 분석
Top SQL 화면은 분석 기준 탭과 정렬 순서를 선택하여 SQL 성능을 다양한 관점에서 분석할 수 있도록 구성되어 있습니다. 사용자는 애플리케이션 관점의 그룹 분석부터 개별 SQL 성능 분석까지 drill-down/drill-up 방식으로 단계적으로 탐색할 수 있습니다.
Top SQL 분석은 다음 순서로 진행합니다.
-
분석 기준 탭에서 분석 기준을 선택하세요.
- 분석 기준 유형: ALL, DB, USER, HOST
-
정렬 순서에서 Top 선정 지표를 선택하세요.
- Top 선정 지표 유형: Elapsed Time, Avg Elapsed Time 등
-
차트에서 부하가 높은 그룹을 식별하세요.
-
특정 그룹을 선택하고, SQL List에서 개별 Top SQL을 확인하세요.
-
추가 분석이 필요하면 SQL 상세 분석 화면으로 이동해 분석하세요.
기본 옵션
상단 필터 영역에서 시간, 대상 인스턴스, 필터 등을 설정할 수 있습니다.
-
시간: 조회 시간 범위 선택 (1분 ~ 30일)
-
인스턴스: 조회 대상 DB 인스턴스 선택
-
필터: 필드별 조건 검색 (기본:
SQL Text에서 'WhaTap' 제외) -
정렬 순서: Top SQL을 선정할 기준 지표(Elapsed Time, Avg Elapsed Time, Max Elapsed Time, Execute Count) 선택, 선택한 지표를 기준으로 내림차순 정렬
-
조회 건수: 테이블에 표시할 건수 설정
-
Top N: 추이 차트에 표시할 상위 항목 수 설정
-
컬럼 선택: 표시할 컬럼을 추가/삭제하고, 드래그로 순서 변경할 수 있음
-
다운로드: CSV 형식으로 내보내기
필드 패널
화면 왼쪽의 필드 패널에서 필터 조건을 쉽게 추가할 수 있습니다. 필드명을 클릭해서 조건을 넣으면 해당 조건이 필터에 추가됩니다.
| 필드 | 타입 | 설명 |
|---|---|---|
| SQL Text | 문자 | SQL 문 |
| Elapsed Time | 숫자 | 수행 시간 합계(초) |
| Avg Elapsed Time | 숫자 | 평균 수행 시간(초) |
| Max Elapsed Time | 숫자 | 최대 수행 시간(초) |
| Execute Count | 숫자 | 실행 횟수 |
| SQL Hash Value | 문자 | SQL 해시값 |
| User | 문자 | 실행 사용자 |
분석 기준 탭
분석 기준 탭에서는 Top SQL을 어떤 기준으로 분석할지 선택합니다. ALL, DB, USER, HOST와 같은 다양한 분석 기준을 제공하며, 선택한 기준에 따라 SQL 실행 정보를 그룹 단위 또는 SQL 단위로 분석할 수 있습니다.
ALL
ALL을 선택하면 SQL 단위의 Top SQL을 바로 확인할 수 있습니다. 차트 또한 SQL 단위 기준으로 표시되며, 시스템 전체에서 성능 영향도가 높은 SQL을 직접 확인할 때 사용합니다.
DB/USER/HOST
DB/USER/HOST는 애플리케이션 관점에서 자주 사용하는 분석 기준입니다. 이 탭을 선택하면 해당 기준으로 SQL 실행 지표가 집계되어 차트에 표시됩니다.
| 탭 | 설명 |
|---|---|
| DB | 데이터베이스 단위로 SQL 실행 부하 분석 |
| USER | 사용자 계정 기준으로 SQL 부하 분석 |
| HOST | 호스트 기준으로 SQL 부하 분석 |
차트에서 특정 그룹을 선택하면 하단에 해당 그룹에 속한 SQL 목록(SQL List)이 표시됩니다. 이를 통해 그룹 → SQL 단계로 drill-down하여 개별 Top SQL까지 상세 분석할 수 있습니다.
추이 차트
선택한 지표 탭 기준으로 Top N개 SQL의 추이를 시계열 차트로 표시합니다. 어떤 SQL이 해당 지표값이 높은지, 어떤 시간대에 높은지 한눈에 확인할 수 있습니다. 차트 하단의 범례에서 각 SQL을 확인할 수 있으며, 범례 또는 차트를 클릭하면 해당 SQL 라인이 하이라이트됩니다.
조회 시간 범위에 따라 차트의 데이터 간격이 자동 조정됩니다.
| 조회 범위 | 차트 인터벌 |
|---|---|
| 3시간 이하 | 1분 또는 5분(sqlstat_send_interval 값에 따라 결정) |
| 1일 이하 | 5분 |
| 30일 이하 | 1시간 |
쿼리별 차트
테이블 항목의 ► 버튼을 클릭하면 해당 개별 쿼리의 실행 횟수와 평균 수행 시간 차트를 확인할 수 있습니다. 차트 인터벌은 위 기준과 동일합니다.
-
마우스를 오버하면 시간별 수치를 확인할 수 있습니다.
-
차트의 막대 그래프를 클릭하면 해당 시간의 인스턴스 모니터링 화면이 새 창으로 열립니다. 해당 SQL이 수행된 시간대의 인스턴스 전반과 액티브 세션을 한번에 확인할 수 있습니다.
데이터 해석 가이드
주요 지표
| 컬럼 | 의미 | 해석 포인트 |
|---|---|---|
sql | SQL 문(리터럴 값 제외) | 어떤 쿼리인지 확인 |
instance | 실행된 인스턴스 이름 | 어떤 DB에서 실행되었는지 확인 |
execute count | 실행 횟수 | 높을수록 자주 호출되는 SQL → 최적화 효과가 큼 |
elapse sum (sec) | 총 누적 수행 시간(초) | 높을수록 전체 부하가 큰 SQL |
elapse avg (sec) | 평균 수행 시간(초) = elapse sum / execute count | 높을수록 개별 실행이 느린 SQL → 튜닝 우선 대상 |
elapse max (sec) | 최대 수행 시간(초) | 간헐적 성능 저하 감지 → 최악의 케이스 파악 |
튜닝 대상 SQL 식별
-
elapse sum이 높고execute count도 높은 SQL자주 실행되면서 전체 부하가 큼 → 최우선 튜닝 대상
-
elapse avg가 높은 SQL개별 쿼리 자체가 느림 → SQL 튜닝, 인덱스 점검
-
elapse avg는 낮지만execute count가 높은 SQL개별은 빠르지만 너무 자주 호출됨 → 캐싱, 호출 로직 개선
-
elapse max와elapse avg차이가 큰 SQL평소에 빠르지만 특정 조건에서 급격히 느려짐 → 락 경합, 데이터 편향 등 확인
실전 활용 시나리오
시나리오 1. 전체 부하가 큰 SQL 찾기
-
elapse sum (sec)기준으로 내림차순 정렬 -
상위 SQL이 전체 DB 부하에 가장 큰 영향을 주는 쿼리
-
execute count와elapse avg를 함께 확인하여 판단-
elapse avg가 높으면: 개별 쿼리 자체가 느림 → SQL 튜닝, 인덱스 점검
-
elapse avg는 낮지만 execute count가 높으면: 너무 자주 호출됨 → 캐싱, 호출 로직 개선
-
시나리오 2. 느린 SQL 찾기
-
elapse avg (sec)기준으로 내림차순 정렬 -
개별 실행이 느린 SQL 식별
-
해당 SQL의 Plan(실행 계획)을 확인하여 튜닝 포인트 결정
시나리오 3. 간헐적 성능 저하 감지
-
elapse max (sec)와elapse avg (sec)의 차이가 큰 SQL 확인 → 평소에 빠르지만 특정 조건에서 급격히 느려지는 SQL -
► 버튼으로 쿼리별 추이 차트를 열어 느려진 시간대 확인
-
해당 시간대의 막대 그래프를 클릭하여 인스턴스 모니터링에서 원인 분석
시나리오 4. 특정 시간대 이상 분석
-
추이 차트에서 비정상적으로 높은 구간 확인
-
해당 시간대를 클릭하여 인스턴스 모니터링 지표 확인
-
어떤 SQL이 해당 시간대에 집중적으로 실행되었는지 분석
추가 기능
SQL 상세 정보를 확인하고 조건 기반 필터를 설정할 수 있습니다.
SQL 상세 보기
SQL 컬럼을 클릭하면 상세 정보 창이 열립니다. SQL 상세 창 설명은 다음을 참고하세요.
필터 사용법
-
필터 추가 버튼을 클릭하세요.
-
필터 키를 선택하세요.
-
문자(String):
=(포함),!=(미포함) -
숫자(Number):
==(같음),>=(크거나 같음),<=(작거나 같음)
-
-
값을 입력한 후 적용하세요.
-
다중 조건은 AND 로직를 적용하세요.