슬로우 쿼리
슬로우 쿼리 화면에서 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설정 확인