Search Results for 'profiling'

1 POSTS

  1. 2011.10.03 MySQL Tunning시 사용되는 명령어 몇개...

네이버 블로그에 썼던것을 다시 정리하며...

DB System이란 것이 시스템과 밀접한 관계가 있는 부분이라 딱히 몇개의 명령어만으로 튜닝을 할 수 있는것은 절대 아니다.

다만 쿼리 튜닝시 또는 시스템이 버벅거리면서 부하를 느끼는데  체크하고자 하는 사항이 발생할 때, 참고할 만한 몇개의 명령어 팁만을 메모해 놓고 필요할때 꺼내 쓰도록 해보자.

1. explain

주로 인덱스가 제대로 구성되었는지, Where절 이하에서 사용되는 index의 튜닝시 필요하다.

explain extended 를 하면 좀더 상세한 내용이 표시된다.

2. mysqladmin processlist

현재 어느 프로세스, 어떤 쿼리가 어떤형태의 모습으로 시스템 부하를 야기하는지 실시간으로 체크할때 사용.

\>myaqladmin processlist 를 치면 그때 그때의 쿼리들이 눈에 들어온다.

자동으로 보고싶다면 -i 옵션을 두어서 일정시간마다 자동으로 process를 체크할수 있도록 하면 편하다.

mysqladmin -i5 processlist (5초마다 체크하라~)

3. slow-query

위의 과정에서 눈에 띄게 자주 보이는 쿼리가 있다면 해당 쿼리를 찾아서 튜닝한다.

또는 slow-query log를 찾아서 튜닝을 한다.

slow-query log의 위치는 일반적으로  /var/log/mysql 에 존재한다.

4. profile 체크

slow-query log에 쌓인 쿼리를 하나씩 뜯어보려면 explain 과 함께 profiling 명령어를 통해 체크해 보면 어느부분에서 시간이 걸리는지 알수 있다.

mysql> set profiling=1;

mysql> SELECT * FROM BBS;

mysql> show profiles;

여러개의 쿼리를 실행하고 난뒤엔 show profiles 를 하게 되면 그동안 실행한 쿼리에 Query_id가 붙어있는 목록이 보인다.

mysql>show profile for query 3 ;

위와 같이 실행하면 쿼리 실행에 걸린 상세항목이 표시된다.

마지막에 실행한 쿼리의 profile을 보고 싶다면

mysql> show profile;

하면 된다.

profiling은 mysql 버전 5.1.28 버전 이후부터 지원한다.