Today I Learned
실행 계획 개요
1번을 SQL Parsing 이라고 한다. MySQL 서버의 SQL Parse라는 모듈이 처리한다.
1번 단계에서 문법 오류가 걸러지고, "SQL 파스 트리"가 만들어진다.
MySQL 서버는 SQL 문장 그 자체가 아니라 SQL 파스 트리를 이용해 쿼리를 실행.
2번 단계에서 SQL 파스 트리를 참조해 수많은 처리를 한다.
최적화 및 실행 계획 수립의 단계임, MySQL 서버의 옵티마이저에서 처리한다.
2번 단계가 완료되면 쿼리의 실행 계획이 만들어진다.
1,2번 단계는 거의 MySQL 엔진에서 처리하고, 3번 단계에서는 MySQL 엔진과 스토리지 엔진이 동시에 참여해서 처리한다.
서버 엔진: 클라이언트가 쿼리를 요청할 때, 1번 2번 단계(쿼리 파싱)를 해서 스토리지 엔진에 데이터를 요청한다.
스토리지 엔진: 물리적 저장장치를 데이터에 불러오는 역할을 한다.
스토리지 엔진이 중요. 실제로 데이터와 맞닿아 있는 것은 스토리지 엔진이기 때문에 검색해보면 MyISAM 과 InnoDB 의 차이점 같이 스토리지 엔진의 비교를 많이 볼 수 있다.
두 스토리지 엔진의 간단한 차이는 MyISAM 은 테이블 단위의 락이 걸려서 저사양 컴퓨터에 어울리고 InnoDB는 레코드 단위의 락이 걸려 ACID 트랜잭션을 지원한다. InnoDB는 데이터를 불러오는 게 비교적 느리다. MySQL 8 부터는 MyISAM 을 지원하지 않는다.