[DB] MySQL - Slow Query 로그확인

|
MySQL 클라이언트 프로그램을 사용하면 항상 궁금한점이 있었다.

클라이언트 프로그램을 사용해 결과값을 가져오면 결과값을 반환하는데 걸린 시간과 결과값이 함께 나온다.

그런데 여기서 나타나는 시간 중 실제 DBMS에서 걸린시간은 과연 얼마나 될까.

MySQL 역시 데이터의 변동사항을 바이너리 로그로 제공받을 수 있다. 하지만 해당 로그를 활성화 할 경우 엄청나게 늘어나는

로그데이터를 관리해야 한다.(백업용도로 사용할 수 있다는 장점도 존재한다.)



그리고 MySQL에서 제공하는 또 하나의 로그로 Slow Query 로그라는 것이 존재한다.

해당 로그는 사용자가 정한 기준시간 이상으로 쿼리가 수행될 경우 해당쿼리의 수행시간, 대상 row수, 결과 row수, 쿼리 등

관련정보를 로그로 남겨 실제 DBMS에서 수행된 시간 등의 정보를 확인이 가능하다.

Slow Query 로그를 활성화 시키는 방법은 다음과 같다. 

my.cnf 파일에서 주석처리된 다음과 같은 사항을 활성화 시키고 서비스를 재시작 하면 된다.

# my.cnf
log-slow-queries = /var/log/mysql/mysql-slow.log  //로그저장위치

long_query_time = 3   //로그기록 시간기준 


지금 여기서는 3초의 시간을 기준으로 설정하였다. 만약 무조건 로그를 남기고 싶은 경우에는 시간을 0으로 설정하면 되겠다.



로그에서는 다음과 같은 상세정보를 제공한다.

Time = 쿼리를 요청한 시간
User@Host = 쿼리를 요청한 아이디와 host

Query_time = 쿼리가 실제 수행된 시간
Lock_time = 락이 걸린시간
Rows_sent = 쿼리결과 row수
Rows_examined = 쿼리대상 row수
실제 수행된 쿼리 


위 내용과 같은 로그정보 등도 활용하여, cost를 고려한 쿼리를 잘 작성할 수 있도록 하자.

And