슬로우 쿼리
슬로우 쿼리 화면에서 DB 파라미터에 설정된 기준 시간을 초과한 느린 SQL을 모니터링하고 확인할 수 있습니다. PostgreSQL은 슬로우 쿼리를 로그 파일로 기록하지만, 이를 확인하려면 DB 서버에 터미널로 접속하여 텍스트 로그를 직접 읽어야 합니다. 슬로우 쿼리 로그를 실시간으로 수집하여 시각적인 차트와 목록으로 제공합니다.
-
Slow Query 차트에서 느린 쿼리의 발생 시점과 수행 시간을 시각적으로 파악할 수 있습니다.
-
Slow Query List에서 개별 쿼리의 상세 정보를 확인하고, 실행 계획(Plan)을 조회할 수 있습니다.
-
실시간(Live) 모드와 과거 시간 조회를 모두 지원합니다.
슬로우 쿼리 수집을 위해 추가 에이전트가 필요합니다. 온프레미스 환경은 XOS 에이전트, 클라우드(AWS RDS 등) 환경은 DBXC 에이전트를 설치해야 합니다.
슬로우 쿼 리 차트는 대시보드의 SQL Elapse Map 차트와 유사하지만, 다음과 같은 차이가 있습니다.
| 구분 | 슬로우 쿼리 | SQL Elapse Map |
|---|---|---|
| 데이터 소스 | DB가 남기는 슬로우 쿼리 로그 | 에이전트가 5초 간격으로 수집하는 액티브 세션 |
| 수행 시간 정확도 | DB가 기록한 실제 수행 시간으로 정확함 | 5초 간격 수집으로 최대 5초의 오차 발생 가능 |
| 수집 대상 | 설정 기준 시간(log_min_duration_statement)을 초과한 쿼리만 | 수집 시점에 실행 중인 모든 액티브 세션 |
사전 설정
이 화면에 데이터를 표시하려면 DB 설정, DBX Agent 설정, 환경에 따라 XOS Agent 또는 DBXC Agent 설정이 필요합니다.
DB 설정
postgresql.conf에서 슬로우 쿼리 기준 시간을 설정합니다. 변경 후 PostgreSQL 재시작 또는 pg_reload_conf() 실행이 필요합니다.
log_min_duration_statement = 500
| 파라미터 | 설명 |
|---|---|
log_min_duration_statement | 설정값(밀리초)을 초과하는 SQL을 로그에 기록합니다. 예: 500이면 500ms 이상 소요되는 SQL이 기록됩니다. |
DBX Agent 설정
whatap.conf에 다음 설정을 추가합니다.
slow_query_log=ON
| 설정 항목 | 타입 | 기본값 | 설명 |
|---|---|---|---|
slow_query_log | String | OFF | 슬로우 쿼리 로그 수집 활성화 |
OS 에이전트 설정
슬로우 쿼리 로그를 수집하려면 DB 운영 환경에 맞는 에이전트가 필요합니다.
| 환경 | 필요 에이전트 | 주요 설정 | 참고. 설정 안내 |
|---|---|---|---|
| 온프레미스(Linux, Windows) | XOS 에이전트 | 없음 (자동 인식 실패 시 slow_query=에 로그 파일 경로 직접 지정) | XOS 에이전트 설정 |
| 클라우드(AWS RDS, NCP 등) | DBXC 에이전트 | slow_query: true (config.yaml 인스턴스별 설정) | DBXC 에이전트 설정 |
슬로우 쿼리
기본 옵션
슬로우 쿼리 화면의 상단 필터 영역에서 조회할 기간과 대상 DB 인스턴스를 선택할 수 있습니다.
-
시간: 실시간(Live) 모드 또는 과거 시간을 선택합니다. Live 모드는 10초 간격으로 자동 갱신됩니다.
-
인스턴스: 조회 대상 DB 인스턴스를 선택합니다. 전체 또는 개별 인스턴스를 선택할 수 있습니다.
Slow Query 차트
슬로우 쿼리가 발생한 시점을 scatter 차트로 표시합니다. Y축은 수행 시간(단위: 초), X축은 시간입니다.
- 각 점은 하나의 슬로우 쿼리를 나타내며, 위에 위치할수록 오래 걸린 쿼리입니다.
- 차트 영역을 마우스 드래그하면 해당 구간의 쿼리만 하단 목록에 표시됩니다.
- 우측 상단의 ∧ / ∨ 버튼으로 Y축 범위를 조정할 수 있습니다.
Slow Query List
차트에서 선택한 구간에 해당하는 슬로우 쿼리 목록을 표시합니다.
| 컬럼 | 설명 |
|---|---|
Instance | 쿼리가 실행된 인스턴스 명 |
DB | 데이터베이스 명 |
User | 실행 사용자 명 |
Log Time | 슬로우 쿼리 로그 기록 시각 |
Type | 로그 유형(예: statement) |
Coltype | 컬렉션 유형 |
Duration (s) | 쿼리 수행 시간(초) |
SQL | 실행된 SQL 문 |
SQL 상세 보기
SQL 컬럼의 쿼리를 클릭하면 상세 정보 창이 열립니다.
데이터 해석 가이드
주요 확인 포인트
-
Duration이 긴 쿼리: 개별 실행 시간이 긴 쿼리 → SQL 튜닝, 인덱스 점검
-
동일한 SQL이 반복적으로 나타나는 경우: 특정 쿼리가 지속적으로 느림 → 근본적인 튜닝 필요
-
특정 시간대에 집중된 경우: 해당 시간의 DB 부하, 락 경합, 배치 작업 등 외부 요인 확인
실전 활용 시나리오
시나리오 1. 느린 쿼리 실시간 모니터링
-
Live 모드에서 Slow Query 차트 관찰
-
새로운 점이 나타나면 해당 영역을 드래그하여 선택
-
Slow Query List에서 쿼리 확인 → SQL 클릭하여 상세 정보 및 실행 계획 조회
시나리오 2. 특정 시간대 슬로우 쿼리 분석
-
시간 필터에서 문제가 발생한 시간대 선택
-
차트에서 쿼리가 집중된 구간을 드래그
-
Duration이 긴 쿼리부터 확인하여 원인 분석
시나리오 3. 슬로우 쿼리 기준 조정
-
슬로우 쿼리가 너무 많이 수집되면
log_min_duration_statement값을 높여 기준 완화 -
슬로우 쿼리가 수집되지 않으면
log_min_duration_statement값을 낮추거나,slow_query_log=ON설정 확인
AI로 분석하기
화면에서 WhaTap AI 버튼을 클릭하면 WhaTap AI 채팅 창이 열리고, 조회한 화면 데이터를 요약해 분석한 결과가 대화로 표시됩니다. 결과를 읽은 다음 같은 대화에서 후속 질문을 이어서 할 수 있습니다.
-
분석에 사용하는 데이터는 산점도에서 선택한 항목 중 소요 시간이 긴 상위 20건입니다.
-
분석 대상은 화면에 조회된 데이터입니다. 조회 조건을 바꾼 다음 다시 분석하면 바뀐 데이터를 기준으로 분석합니다.
-
대화 이력에는
AI 분석 - {화면 이름}형식으로 기록됩니다.