본문 바로가기

도구의발견

SQL 쿼리 프로파일링

심심 풀이로 쿼리를 '발'로 짜다 보니 이중 삼중의 조인쿼리와 서브쿼리가 한데 어우러진 아주 복잡 미묘한 쿼리를 만들게 되었습니다.

암튼 중요한 것은 바롤 짠 쿼리가 아니라 이 쿼리가 과연 정상적인 성능을 낼 수 있을까 하는 의문이 들더군요.

MySQL을 대상으로 만들긴 했지만, MySQL에서 사실 쿼리가 어떤 순서로 실행 되는지도 모르고(쿼리 계획 이라고 하는 것 같던데..) 내부 구조에도 아는 바가 없어 고민하며 프로파일링 툴을 찾다가 몇 가지 재미있는 링크들을 찾아 간만에 포스팅을 하나 올립니다.


일단 explain 이라는 쿼리 플랜을 보여주는 명령어가 있더군요. SQL 표준이 아닌지라, MySQL에서는 select 절만 지원한다고 하는데, 오라클이나 좀 빵빵한 DB들은 explain update, delete까지 지원하지 않을까 싶습니다.

 

쿼리 플랜이란 쿼리가 실행 되는 순서 정도라고 생각하시면 될 듯합니다.

 

해당 정보를 보시면 특정 테이블에 몇 번 접근 했는지, index를 이용했는지 그냥 쌩으로 리스트를 쭉 훑었는지 등등 튜팅에 도움이 될만한 정보를 많이 보여주더군요.

 * MySQL - Explain 정보보는법
(, MySQL에서는 select 밖에 지원이 안됩니다..ㅠㅠ)

 

그리고 MySQL 5.0 버전 부터는 프로파일러가 붙어서 따라 나오더군요. 사용법은 http://niflheim.tistory.com/56 에 보시면 한글로 아주 친철하게 설명이 되어 있습니다만…쿼리 브라우져로 붙어서 하면 안 나오더군요, 꼭 콘솔로 하셔야만 합니다.

쿼리의 성능
, 실제 쿼리가 실행 되는데 걸리는 시간, 테이블 접근에 걸리는 시간 등의 시간정보들을 얻을 수 있습니다.

 

유익한 글이었다면 공감(❤) 버튼 꾹!! 추가 문의 사항은 댓글로!!