본문으로 건너뛰기

슬로우 쿼리

슬로우 쿼리 화면에서 DB 파라미터에 설정된 기준 시간을 초과한 느린 SQL을 모니터링하고 확인할 수 있습니다. MySQL은 슬로우 쿼리를 로그 파일 또는 테이블에 기록하지만, 이를 확인하려면 DB 서버에 터미널로 접속하여 텍스트 로그를 직접 읽거나 mysql.slow_log 테이블을 조회해야 합니다. 이 화면에서는 슬로우 쿼리 로그를 실시간으로 수집하여 시각적인 차트와 목록으로 제공합니다.

  • Slow Query 차트에서 느린 쿼리의 발생 시점과 수행 시간을 시각적으로 파악할 수 있습니다.

  • Slow Query List에서 개별 쿼리의 상세 정보를 확인하고, 실행 계획(Plan)을 조회할 수 있습니다.

  • 실시간(Live) 모드와 과거 시간 조회를 모두 지원합니다.

노트

슬로우 쿼리 수집을 위해 추가 에이전트가 필요합니다. 온프레미스 환경에서는 XOS 에이전트, 클라우드(AWS RDS 등) 환경에서는 DBXC 에이전트를 설치해야 합니다.

슬로우 쿼리 차트는 대시보드의 SQL Elapse Map 차트와 유사하지만, 다음과 같은 차이가 있습니다.

표 | 슬로우 쿼리 차트와 SQL Elapse Map 차트의 차이점
구분슬로우 쿼리SQL Elapse Map
데이터 소스DB가 남기는 슬로우 쿼리 로그에이전트가 5초 간격으로 수집하는 액티브 세션
수행 시간 정확도DB가 기록한 실제 수행 시간으로 정확함5초 간격 수집으로 최대 5초의 오차 발생 가능
수집 대상설정 기준 시간(long_query_time)을 초과한 쿼리만수집 시점에 실행 중인 모든 액티브 세션

사전 설정

이 화면에 데이터를 표시하려면 DB 설정, DBX Agent 설정, 환경에 따라 XOS Agent 또는 DBXC Agent 설정이 필요합니다.

DB 설정

my.cnf(또는 my.ini)에서 슬로우 쿼리 관련 파라미터를 설정합니다. 변경 후 MySQL 재시작이 필요합니다.

slow_query_log = 1
long_query_time = 3
log_output = FILE
파라미터설명
slow_query_log슬로우 쿼리 로그 활성화 여부. 1이면 활성화됩니다.
long_query_time설정값(초)을 초과하는 SQL을 로그에 기록합니다. 예: 3이면 3초 이상 소요되는 SQL이 기록됩니다.
log_output로그 저장 방식. FILE이면 파일로, TABLE이면 mysql.slow_log 테이블에 기록합니다.
노트

log_output=TABLE로 설정한 경우 모니터링 계정에 조회 권한을 부여해야 합니다. 단, TABLE 모드는 슬로우 쿼리 발생량이 많을 경우 DB 성능에 영향을 줄 수 있으므로 주의가 필요합니다.

GRANT SELECT ON mysql.slow_log TO whatap;

DBX Agent 설정

whatap.conf에서 slow_query_log 옵션은 기본값이 ON이므로 별도 설정이 필요하지 않습니다.

slow_query_log=ON
설정 항목타입기본값설명
slow_query_logBooleanON슬로우 쿼리 로그 수집 활성화

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데이터베이스 명
Start Time쿼리 시작 시각
User실행 사용자 명
Host접속 호스트
ID스레드 ID
Schema스키마 명
QC Hit쿼리 캐시 히트 여부
Query Time (s)쿼리 수행 시간 (초)
Lock Time (s)잠금 대기 시간 (초)
Rows Sent클라이언트에 반환된 행 수
Rows Examined쿼리 처리를 위해 검사한 행 수
Rows Affected변경된 행 수
Bytes Sent클라이언트에 전송된 바이트 수
SQL실행된 SQL 문

SQL 상세 보기

SQL 컬럼의 쿼리를 클릭하면 상세 정보 창이 열립니다.

데이터 해석 가이드

주요 확인 포인트

  • Query Time이 긴 쿼리: 개별 실행 시간이 긴 쿼리 → SQL 튜닝, 인덱스 점검

  • Lock Time이 긴 쿼리: 잠금 대기가 길어 성능 저하 → 트랜잭션 경합, 락 원인 확인

  • Rows Examined가 큰 쿼리: 검사 행 수 대비 반환 행 수가 적으면 → 인덱스 누락 또는 비효율적인 스캔

  • 동일한 SQL이 반복적으로 나타나는 경우: 특정 쿼리가 지속적으로 느림 → 근본적인 튜닝 필요

  • 특정 시간대에 집중된 경우: 해당 시간의 DB 부하, 락 경합, 배치 작업 등 외부 요인 확인

실전 활용 시나리오

시나리오 1. 느린 쿼리 실시간 모니터링

  1. Live 모드에서 Slow Query 차트 관찰

  2. 새로운 점이 나타나면 해당 영역을 드래그하여 선택

  3. Slow Query List에서 쿼리 확인하고 SQL 클릭하여 상세 정보 및 실행 계획 조회

시나리오 2. 특정 시간대 슬로우 쿼리 분석

  1. 시간 필터에서 문제가 발생한 시간대를 선택

  2. 차트에서 쿼리가 집중된 구간을 드래그

  3. Query Time이 긴 쿼리부터 확인하여 원인 분석

시나리오 3. 슬로우 쿼리 기준 조정

  1. 슬로우 쿼리가 너무 많이 수집되면 long_query_time 값을 높여 기준 완화

  2. 슬로우 쿼리가 수집되지 않으면 long_query_time 값을 낮추거나, slow_query_log=ON 설정 확인