비실이의 개발 성장기

오래걸리는 Query를 기록해주는 slow log 설정방법 본문

DB/MySQL

오래걸리는 Query를 기록해주는 slow log 설정방법

DubbingLee 2016. 12. 11. 20:50


MySQL / MariaDB의 


Slow Query log를 설정하는 방법에 대해


포스팅 하겠습니다.





* Slow Query log 란?


SQL 질의 요청을 했는데 응답이 오래걸릴 경우


이 부분에 대해 log를 남기는 것.







Mysql 접속을 하겠습니다.


mysql -u root - p 를 입력하여 접속합니다.




그 다음, slow query log 설정 상태를 확인하겠습니다.


show variables like 'slow_query_%'; 를 입력합니다.




현재는 slow_query_log 설정이 OFF로 되어있어 log가 생성되지 않습니다.


slow_query_log_file 은 log파일이 생성 될 경로 입니다.





설정을 ON으로 바꾸러 이동하겠습니다.


 exit 를 입력하여 잠시 mysql 을 종료하겠습니다.





mysql 설정을 변경하려면 my.cnf 파일을 수정해야 합니다.


my.cnf 파일은  /etc 에 위치하고 있습니다.


vi /etc/my.cnf 를 입력하여 my.cnf에 설정을 추가하겠습니다.







빨간 테두리 부분이 slow query 설정을 한 부분입니다.



slow_query_log 의 값을 1로 하면 ON, 0으로 하면 OFF 입니다.


slow_query_log_file 은 log 파일이 생성 될 경로 입니다.


long_query_time 를 3으로 주면 query 실행시간이 3초 이상인 query에 대해 


log를 남기겠다는 설정입니다.




입력을 마쳤으면 :wq! 로 저장 후 나옵니다.





변경 된 설정을 적용시키려면 mysql을 재기동 해야 합니다.


service mysqld restart 를 입력합니다.






그 다음으로..


log파일이 생성되는 위치를 확인 해보겠습니다.


cd /var/log 를 입력하여 이동합니다.




mysql log 용 디렉토리를 하나 생성하겠습니다.



mkdir mysql 를 입력하여 디렉토리를 생성합니다.


mysql 디렉토리 접근 권한 설정도 하겠습니다.


명령어 chown mysql:mysql /var/log/mysql 을 입력합니다.





권한설정까지 끝났다면..



다시 mysql에 접속합니다.




select sleep(5); 를 입력합니다.


* sleep() 은 mysql 의 내장함수로, 의도적으로 쿼리를 지연시키는 함수 입니다.





log가 제대로 기록됐는지 확인하겠습니다.




exit로 mysql을 나옵니다.



그리고 아까 설정한 slow query 경로로 이동하겠습니다.


cd /var/log/mysql 





slow query 설정에 문제가 없었다면.. 위 처럼 mysql-slow.log 파일이


생성되어 있습니다.



tail -f mysql-slow.log 로 log 확인을 하겠습니다.





# 이 붙어있는 행을 보면 됩니다.


Time 은 해당 query를 수행한 시간을 


User@Host 는 접속계정 과 host 정보를


Query_time 은 쿼리가 수행되기까지 걸린 시간 (초 단위)


Lock_time 은 쿼리를 수행하는데 사용 된 테이블 독점 시간(?)


이라고 합니다.


맨 마지막에는 쿼리문도 나오는군요.





간단한 개인 프로젝트 시에는 slow query 를 볼 일이 없지만


실무에서는 slow query 설정을 해 놓으면


여러모로 활용할 수 있을 것 같습니다.




# 잘못된 점이나 궁금한 사항은 댓글로 남겨주세요.








0 Comments
댓글쓰기 폼