[출처] 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)수

- 가장하단 : 수행된 쿼리문

Posted by 꼬장e
,