[출처] http://goo.gl/w0AsnU
# 설치환경
- CentOS 5.x (64bit)
- mysql 5.1.59
설치위치: /home/APM/mysql
1. 슬로우쿼리란?
- 일정 시간을 초과하는 쿼리에 대해 로그를 남김으로써 로그 분석을 통해 쿼리 성능을 개선해 나갈 수 있다
2. 슬로우로그 쿼리 활성화
- /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 ~]#
|
* slow query 로그에 항목은 다음과 같습니다.
- Time : 쿼리요청시간
- User@Host : 쿼리를 요청한 User와 호스트
- Query_time : 실제 수행시간
- Lock_time : 락이 걸린 시간
- Rows_sent : 쿼리결과로 나온 열(Row)의 수
- Rows_examined : 쿼리대상의 열(Row)수
- 가장하단 : 수행된 쿼리문