반응형
슬로우 쿼리 로그(slow query log)는 MySQL 성능 최적화를 위한 핵심 기능이다.
하지만 이 로그는 기본적으로 비활성화되어 있기 때문에 명시적인 설정 없이는 작동하지 않는다.

🛠️ 슬로우 쿼리 로그 설정 개요
슬로우 쿼리 로그를 활성화하려면 다음 세 가지 요소를 반드시 지정해야 한다.
- 로그 기능 활성화 (slow_query_log)
- 로그 저장 경로 지정 (slow_query_log_file)
- 기록 기준 시간 설정 (long_query_time)
선택적으로 아래 옵션도 함께 설정하면 좋다.
- log_queries_not_using_indexes: 인덱스를 사용하지 않은 쿼리도 기록
- min_examined_row_limit: 일정 수 이상의 rows를 검색한 경우만 기록
반응형
🖥️ MySQL 설치형 (my.cnf) 설정 방법
✅ 1. my.cnf 파일 위치 찾기
Linux 기준 기본 경로는 다음과 같다:
/etc/my.cnf
/etc/mysql/my.cnf
아래 명령어로 MySQL이 사용하는 설정 파일 위치를 확인할 수 있다:
mysql --help | grep my.cnf
✅ 2. my.cnf 파일에 설정 추가
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
log_queries_not_using_indexes = 1
min_examined_row_limit = 100
✅ 3. 로그 파일 경로 디렉토리 생성 (필요 시)
sudo mkdir -p /var/log/mysql
sudo chown mysql:mysql /var/log/mysql
✅ 4. MySQL 서비스 재시작
sudo systemctl restart mysql
✅ 5. 정상 적용 확인
MySQL 콘솔에서 다음 명령으로 확인한다:
SHOW VARIABLES LIKE 'slow_query_log';
SHOW VARIABLES LIKE 'slow_query_log_file';
SHOW VARIABLES LIKE 'long_query_time';
✅ 예제 결과
slow_query_log: ON
slow_query_log_file: /var/log/mysql/mysql-slow.log
long_query_time: 2.000000
반응형
☁️ AWS RDS에서 슬로우 쿼리 로그 설정 방법
AWS RDS에서는 my.cnf에 직접 접근할 수 없기 때문에 **파라미터 그룹(Parameter Group)**을 통해 설정해야 한다.
✅ 1. RDS 콘솔 → Parameter Group 생성
- RDS > Parameter Groups > Create
- Parameter group family: 예) mysql8.0
- Type: DB Parameter Group
- 이름: custom-mysql-slowlog
✅ 2. 설정 변경
아래 항목들을 찾아 다음과 같이 변경한다:
| Parameter | 값 |
| slow_query_log | 1 |
| long_query_time | 2 |
| log_queries_not_using_indexes | 1 |
| min_examined_row_limit | 100 |
변경 후 저장을 반드시 클릭한다.
✅ 3. 해당 파라미터 그룹을 DB 인스턴스에 적용
- RDS > DB 선택 > Modify
- DB parameter group에서 생성한 그룹 선택
- 저장 후, 필요 시 재부팅 (적용 조건에 따라 다름)
✅ 4. 로그 확인 방법
슬로우 쿼리는 RDS에서는 CloudWatch Logs 또는 RDS 콘솔을 통해 확인한다:
- RDS > 로그 및 모니터링 > 로그 파일에서 slowquery/mysql-slowquery.log 확인
- 또는 CloudWatch Logs에 연동하여 실시간 모니터링 가능
🧪 SET GLOBAL로 실시간 설정하는 방법
my.cnf나 RDS 설정 외에도, 다음 명령어로 MySQL 콘솔에서 일시적으로 설정할 수 있다:
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';
SET GLOBAL long_query_time = 1;
SET GLOBAL log_queries_not_using_indexes = 'ON';
이 설정은 서버 재시작 시 초기화되므로, 영구 설정은 my.cnf 또는 RDS Parameter Group으로 해야 한다.
반응형
🧠 실무 팁: 슬로우 쿼리 로그 설정 시 유의사항
- long_query_time을 0.1 이하로 설정하면 로그 폭증 주의!
- 개발 환경에서는 long_query_time = 0으로 모든 쿼리를 확인해도 OK
- 슬로우 쿼리 로그는 반드시 로테이션 및 압축 처리를 주기적으로 설정해야 한다 (logrotate 활용)
- 설정만 하고 로그 분석하지 않으면 무의미하다. 반드시 mysqldumpslow, pt-query-digest 등의 도구와 함께 사용하자
✅ 정리
- 슬로우 쿼리 로그는 slow_query_log, long_query_time, slow_query_log_file 등 기본 설정이 필요하다
- MySQL 설치형은 my.cnf에 직접 설정하고, RDS는 파라미터 그룹을 사용한다
- 실시간 테스트에는 SET GLOBAL 명령어를 활용할 수 있지만, 영구 반영하려면 설정 파일 수정을 해야 한다
- 로그 설정 후에는 로그 분석 도구를 통해 실제 성능 병목을 개선하는 것이 핵심이다
🔗 공식 문서 참고
MySQL 8.0 Reference Manual - The Slow Query Log
반응형
'DB' 카테고리의 다른 글
| [MySQL] 슬로우 쿼리 실전 튜닝 사례로 배우는 병목 원인 분석 (1) | 2025.07.07 |
|---|---|
| [MySQL] mysqldumpslow, pt-query-digest로 슬로우 쿼리 분석하기 🔧 (4) | 2025.07.04 |
| [MySQL] 슬로우 쿼리 로그 파일 위치와 확인 방법 🗂️ (0) | 2025.07.04 |
| [MySQL] slow_query_log 주요 설정 옵션 설명 (long_query_time 등) ⚙️ (0) | 2025.07.04 |
| [MySQL] 슬로우 쿼리 로그란? 원리와 기본 개념 총정리 (0) | 2025.07.04 |
| [MySQL] 실행계획 캐시와 쿼리 플랜 재사용 이해하기 🚀 (1) | 2025.07.04 |
| [MySQL] 서브쿼리 vs JOIN 성능 비교와 실행계획으로 분석하기 (1) | 2025.07.04 |
| [MySQL] JOIN이 느릴 때 실행계획으로 튜닝하는 방법 (0) | 2025.07.04 |