이번섹션에서 우리가 배울것은 다음과 같다.

  1. mysql서버의 전체 구조. 쿼리는 실제로 db 서버 내에서 어떤 계층을 거치는가?
  2. innoDB 스토리지 엔진. 데이터는 실제로 어떻게 저장하고 읽히는가?
  3. 쿼리 실행 흐름 - select 문은 DB클라이언트에서 디스크까지 어떤 과정을 거치는가?

느린 쿼리의 예시.

SELECT *
FROM product
WHERE category_id IN (11, 12, 13, 14) 
  AND price BETWEEN 10000 AND 50000
  AND product_status = 'ACTIVE'
ORDER BY created_at
LIMIT 20;

이 쿼리는 m4기준 1.2초 정도 걸린다. 이 쿼리는 왜 느린걸까? 그걸 알아보자…

MySQL 서버 구조

MySQL 서버의 5계층 아키텍처

image.png

하나씩 살펴보자.

1계층: 커넥션 핸들러

클라이언트의 접속을 관리하는 계층. 클라이언트가 MySQL 서버에 접속하면 다음을 진행한다.

  1. TCP/IP 등으로 연결
  2. 사용자명, 비밀번호, 호스트를 확인 (인증)
  3. 사용자의 권한 확인
  4. 사용자에게 전용 스레드 할당