Mysql 슬로우 쿼리 로그 설정은 어떻게 하나요?
💡 요약 정리
- 슬로우 쿼리는 실행 시간이 일정 시간 이상 걸리는 SQL 쿼리를 기록하는 기능입니다.
/etc/my.cnf설정 파일에 슬로우 쿼리 로그 옵션을 추가하여 활성화할 수 있습니다.- 설정 후에는 MySQL을 반드시 재시작해야 적용됩니다.
- 슬로우 쿼리 로그는 MySQL 성능 튜닝 및 병목 확인에 유용합니다.
1. 설치 환경 정보
- 운영체제: CentOS 5.x (64bit)
- 데이터베이스: mysql 5.1.59
설치 위치:
/home/APM/mysql
2. 슬로우 쿼리란?
- 일정 시간을 초과하는 쿼리에 대해 로그를 남김으로써 로그 분석을 통해 쿼리 성능을 개선해 나갈 수 있습니다.
3. 슬로우 쿼리 로그 활성화 방법
/etc/my.cnf파일에 다음 내용을 추가합니다.- 아래 설정은 3초 이상 지속되는 쿼리를 슬로우 쿼리 로그에 저장합니다.
[root@cafe24 ~]# vi /etc/my.cnf
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# The MySQL server
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8
max_connections = 2048
#default-character-set=euckr
#character-set-client-handshake = FALSE
# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
# slow qeury log
log-slow-queries = /home/APM/mysql/var/mysql-slow.log <-- 추가합니다
long_query_time = 3
# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- 설정을 완료한 후, MySQL을 재시작해야 적용됩니다.
[root@cafe24 ~]# /etc/rc.d/init.d/mysql restart
Shutting down MySQL. [ OK ]
Starting MySQL. [ OK ]
[root@cafe24 ~]#
4. 슬로우 쿼리 로그 항목 설명
* 슬로우 쿼리 로그에는 다음 항목들이 포함됩니다.- Time: 쿼리 요청 시간
- User@Host: 쿼리를 요청한 사용자와 호스트 정보
- Query_time: 실제 수행된 시간
- Lock_time: 락이 걸린 시간
- Rows_sent: 쿼리 결과로 반환된 행(Row)의 수
- Rows_examined: 쿼리에서 검사한 총 행(Row)의 수
- 쿼리문: 로그 마지막 줄에 실제 실행된 SQL 쿼리 문이 표시됨