Linux DB

MYSQL의 질의 속도를 튜닝하다보면 MYSQL의 질의에 대한 응답속도가 현저하게 떨어지거나 MYSQL 데이터베이스와 연동되는 특정 어플리케이션이 시스템자원을 현저하게 많이 차지하는 등의 문제가 발생할 수 있습니다. 이 문제를 해결하기 위해 SLOW 로그에서 어떤 프로그램이 문제를 일으키는지에 대한 확인이 가능합니다.


SLOW 로그는 MYSQL의 환경변수인 "long_query_time" 의 설정시간 (초 단위) 이상의 쿼리 시간을 가지는 특정 SQL 쿼리문에 대한 로그만을 기록하는 로그파일입니다. 따라서 SLOW 로그파일을 활용하면 어떤 프로그램이 쿼리시간을 많이 차지하는가를 확인 할 수 있습니다. 즉 어느날 갑자기 MYSQL의 응답속도가 현저하게 떨어졌다면 SLOW 로그로 쿼리 응답속도가 일정시간 지속되는 쿼리문을 찾아서 조치하면 됩니다.


다음은 예시입니다.


[root@host data]#/usr/local/mysql/bin/mysqld_safe --log-slow-quaries=SLOW_QUERY_LOG &

[1] 4228


이 예시에서 SLOW 로그파일명으로 SLOW_QUERY_LOG 라고 지정하였기 때문에 /usr/local/mysql/data 디렉토리에는 SLOW_QUERY_LOG 라고 지정하였기 때문에 /usr/local/mysql/data/ 디렉토리에는 SLOW_QUERY_LOG 라는 파일명이 생성되어 SLOW 쿼리로그를 기록하게 됩니다.


다음 예시는 해당 SLOW 로그 파일을 확인하는 과정입니다.


[root@host data]#ls -l /usr/loca/mysql/data/SLOW_QUERY_LOG

-rw-rw---- 1 mysql 179 9월 15일 15:42 /usr/local/mysql/data/SLOW_QUERY_LOG


위에 표시된 "SLOW_QUERY_LOG" 파일에는 MYSQL의 환경변수 "long_query_time" 에 초단위로 지정된 시간보다 초과하는 쿼리문만 기록합니다.


다음 예시는 MYSQL의 환경변수 "long_query_time"의 값을 확인하는 방법입니다.


[root@host bin]#./mysqladmin -uroot -p variables | grep long_query_time

Enter password: *********

| long_query_time           | 10.000000


결과를 보면 "long_query_time"이 10초로 설정되어 있는 것을 볼 수 있습니다. 물론 이 값은 변경도 가능합니다.