SQL 튜닝에 앞서 기본적으로 알아야 할 용어를 다룬다.

2.1 물리엔진과 오브젝트 용어

DB 엔진 용어

MySQL은 SQL문을 실행할때, MySQL 엔진에서 문법 에러가 있는지, DB에 존재하는 테이블 대상으로 SQL문을 작성했는지와 같은 세부 사항들을 다양한 문법 및 구문으로 검사한다 (parser 역할)

이후 사용자가 요청한 데이터를 빠르고 효율적으로 찾아가는 전략적 계획을 세운다. (optimizer 역할)

이 계획을 토대로 스토리지 엔진에 위치한 데이터까지 찾아간 뒤 해당 데이터를 MySQL 엔진으로 전달한다.

MySQL 엔진은 전달된 데이터에서 불필요한 부분을 필터링하고 필요한 연산 수행 뒤 최종결과를 알려준다.

스토리지 엔진은 사용자가 요청한 SQL문을 토대로 DB에 저장된 디스크나 메모리에서 필요한 데이터를 가져오는 역할을 수행한다.

이후 해당 데이터를 MySQL 엔진으로 보내준다.

스토리지 엔진에 데이터를 저장하는 방식에 따라 각각의 스토리지 엔진을 선택해 사용할 수 있으며 필요하면 외부에서 스토리지 엔진 설치 파일을 가져와 활성화해 즉시 사용할 수 있다.

일반적으로는 온라인상의 트랜잭션 발생으로 데이터 처리하는 OLTP 환경이 대다수이기에 주로 InnoDB 엔진을 사용한다.

대량의 쓰기 트랜잭션이 발생하면 MyISAM 엔진을 선택할 수 있다

메모리 데이터를 로드해 빠르게 읽는 효과를 내려면 Memory 엔진을 사용하는 식으로 응용해 스토리지 엔진 선택 가능

사용자가 요청한 SQL문을 넘겨 받아 SQL 문법 검사적절한 오브젝트 활용 검사를 하고, SQL문을 최소 단위로 분리해 원하는 데이터를 빠르게 찾는 경로를 모색하는 역할 수행.

⇒ SQL의 시작 및 마무리 단계에 MySQL엔진이 관여. 스토리지 엔진으로부터 필요한 데이터만을 가져오는 핵심 역할을 담당