프로젝트를 진행하면서 많은 경험과 에러를 만나왔다. 하지만 프로그램의 유지보수성 측면은 TDD와 클래스기반 개발 말고는 딱히 생각나는 부분이 없었다. 이번에 LandingProject를 진행하면서 TDD등 데이터관리뿐 아니라 DB자체에 Query가동 시간을 기록하고 확인할 수 있는 방법인 Slow Query에대해 알게되어 적용해 보았다.
- Slow Query를 활성화 하기 위해서는 MySQL Configuration 파일을 찾아야 한다. 아래명령어를 사용해서 my.cnf를 수정한다.
$ mysql --verbose --help | grep my.cnf /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
이번에 /etc/my.cnf에 작성하니 적용이 되었다. (여러 디렉토리에 있을경우 맨 좌측부터 우선적용된다.)
- 파일을 아래와 같이 수정한다.
# 쿼리 최대 수행 시간 설정 (이번엔 테스트를 위해 0.001초로 설정하였다.) long_query_time = 0.001 # Slow Query활성화 slow_query_log = 1 # log파일 저장위치 작성 slow_query_log_file = /Users/***/Desktop/slow_query.log //작성자의 바탕화면 위치(log 파일은 따로 생성할 필요 없다.)
Error) 작성할때 [mysqld]를 작성하지 않을 경우 에러가 났다.
TIP) mysql에 직접적으로 명령어를 부여해서 이용할 수 도 있다.
mysql> set global long_query = 3; mysql> set global slow_query = 1; mysql> set global slow_query_log_file = '/Users/***/Desktop/slow_query.log'
- mysql restart
myslq을 재시작 해준다.$mysql.server restart
위와 같이 Query를 보여주면서 Query의 구동 시간과 시작 시간이 나타나게 된다.
TIP) MySQL상 확인방법
SHOW VARIABLES WHERE Variable_Name LIKE 'slow_query_log' OR Variable_Name LIKE 'long_query_time' OR Variable_Name LIKE 'log_output';
을 입력하면 적용된 slow query 설정상태를 알 수 있다.
향후 진행방향
- 실제 프로젝트에 적용을 하여 TDD를 통한 데이터 입출력 테스트 다음으로 Query 시간을 줄여 성능을 높이는 방향도 고려하겠다.
참고