woowacourse-study / 2022-Real-MySQL

⚡️토르⚡️의 짜릿한 Real MySQL 뽀개기 🔨
9 stars 3 forks source link

실행계획의 칼럼 #28

Open awesomeo184 opened 2 years ago

awesomeo184 commented 2 years ago

주제

EXPLAIN 키워드를 통해 실행계획을 보면 칼럼-값 쌍을 확인할 수 있다. 각 칼럼이 어떤 의미를 나타내는지 정리했다.

선정 이유

내가 실행한 쿼리의 실행 계획을 보려면 각 칼럼이 어떤 의미를 갖는지 알아야한다.

해당 텍스트

id 칼럼

각 SELECT 쿼리의 식별자를 나타낸다. 만약 조인을 이용해 여러 개의 테이블이 조인되면 식별자 값은 모두 같은 id가 부여된다.

select_type

각 SELECT가 어떤 타입인지를 나타낸다.

type

각 테이블에 접근하는 방식을 나타낸다. 인덱스 사용 여부 등을 여기서 확인할 수 있기 때문에 성능 튜닝시 꼭 확인해야하는 칼럼 중에 하나이다.

위 세가지 타입은 쿼리 튜닝시 크게 신경쓰지 않아도 된다.

보통의 빠른 응답을 사용자에게 돌려줘야 하는 OLTP 웹 서비스 환경에서는 index와 ALL 방법은 적합하지 않다.

possible_keys

사용될 수 있었던 인덱스의 목록. 말 그대로 후보였던 것들이며 사용한 인덱스를 의미하는 것이 아니다.

key

최종 선택된 실행 계획에서 사용하는 인덱스. 인덱스를 전혀 사용하지 못하면 NULL로 표기된다.

key_len

쿼리를 처리하기 위해 다중 칼럼 인덱스에서 몇 개 칼럼까지 사용했는지 바이트 단위로 알려주는 값. 예를 들어 CHAR(4) 칼럼과 INTEGER 칼럼의 복합 인덱스에서 앞쪽 CHAR(4) 칼럼만 유효하게 사용했다면, 총 인덱스 키는 16바이트지만 key_len에는 12바이트가 표시된다. (utf8 기준 문자 1개 고정값 3바이트)

Extra

주로 내부적인 처리 알고리즘에 대해 조금 더 깊은 내용을 보여준다. 이름과 달리 성능 튜닝에서 중요하게 참고되는 칼럼이다.

관련 페이지

p.343 ~