MySQL 쿼리 튜닝 은 어떻게 할까? 기초편 (EXPLAIN)

이번엔 MySQL 쿼리 튜닝 에 대해 알아보자.

팁! WHERE 절, ORDER BY 절, GROUP BY 절에 사용되는 것들은 왠만하면 인덱스 화
해두는게 좋습니다. 인덱스는 MySQL 서버가 결과를 fetch하는데 더 빠르게 하는 것을
도와줍니다.
또한 index는 정렬하는데(SORT) 매우 효과적이며 효율적으로 동작합니다.

MySQL 에서 Index는 보통 일반 레코드보다 저장공간을 더 차지할 뿐만아니라, INSERT, DELETE,
UPDATE 시 성능저하를 야기합니다. MySQL 쿼리를 작성하는데 있어, (혹은 튜닝 하는데 있어) 항상 충고하여야
하는 상황이,

“최악의 경우” 입니다.

일정 수준 이상의 테스트레코드로 기술자가 생각하고 있는 시나리오대로 잘 흘러가는지를
테스트해보아야 합니다.

mysql> SELECT * FROM user WHERE user_id = 6240;

위의 상황이 있다고 가정해봅시다. 일반적인 MySQL 서버는 해당 id 의 값을 찾기 위해
user 테이블의 모든 레코드를 검색하게 됩니다. 해당 부분(이 경우 WHERE 절에 있는
user_id)이 인덱스가 걸려있다면, 쿼리는 빠르게 실행될 것 입니다.

하지만, 인덱스가 제대로 걸려있는지 안걸려있는지 매번 확인할 수는 없습니다. 그래서
MySQL에는 “EXPLAIN” 절이 있습니다. “EXPLAIN”은 쿼리가 실행 시 해당 쿼리를 분석
해줍니다.

MySQL 쿼리 튜닝, 이건 EXPLAIN 절만 알아도 반은 성공한 겁니다.

mysql> EXPLAIN SELECT * FROM user WHERE user_idx = 100;

해당 분석 내용 중 ‘key’ column과 ‘possible_keys’ column에 보면 해당 키로 인덱스가
되어 fetch 되었는지 알 수 있습니다.

위와 같이 간단한 쿼리의 경우 눈에 띄는 데이터는 보이지 않습니다. 다양한 방법이 많지만,
EXPLAIN 의 결과값 분석만으로도 충분히 query를 튜닝할 수 있습니다.

해당 Column 들에 대한 설명은 다음 글에.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다