my.cnf 파일에 아래 라인을 우선 추가해 주시구요.

log_slow_queries                    = /var/log/mysql/slow.log
long_query_time                     = 3
log_long_format

long_query_time 값은 단위가 초입니다.
3초 이상 걸리는 쿼리가 지정해준 로그 파일에 기록 되도록 합니다.

가장 좋은것은 어플리케이션에서 쿼리와 테이블 구조, 인덱스 등을 최적화(적은 자원으로 가장 빠르게) 해주는 것이지만
그게 불가능할 경우에는 슬로우 쿼리들을 보고 서버 설정을 적절하게 변경해 주는 것입니다.

우선 위의 설정으로 서버를 재시작 하시고 슬로우 쿼리들 중에 시간이 많이 걸리는 것들을 분석 하셔서 인덱스를 추가하거나 그게 불가능 하다면 여러 메모리 설정들을 적절한 값으로 변경해주면 속도 개선이 가능해 집니다.

현재의 로드 에버리지와 말씀해 주신 상황을 봤을때는 임시 테이블을 디스크에 만들어 쓸 가능성이 상당히 높아 보입니다.
혹은 인덱스 없이 풀스캔 하는 경우도 있을 수 있겠네요.

우선 기록된 슬로우 쿼리들과 스키마를 조사 하시고 다시 질문을 해주셔야 할것 같습니다.


원본:

http://kldp.org/node/79318

 
댓글은 로그인 사용자만 작성 가능합니다. 로그인하기