MySQL 서버의 내부에는 크게 두 가지 엔진이 있다.
MySQL 엔진: 커넥션 핸들러 + SQL 파서 및 전처리기 + 옵티마이저 + 키 캐시나 버퍼 풀 등의 보조 저장소 + etc..
스토리지 엔진
MySQL 서버에서 MySQL 엔진은 하나지만 스토리지 엔진은 여러 개를 동시에 사용할 수 있다. (플러그인 스토리지 엔진 모델이다)
MySQL 엔진이 스토리지 엔진에게 보내는 쓰기 또는 읽기 요청을 핸들러(handler) 요청이라고 한다.
만약 현재 MySQL 서버에서 지원하는 스토리지 엔진들을 조회하려면 이렇게 확인하면 된다.

잠깐 InnoDB의 여러 버퍼 풀에 대해서 살펴보면 다음과 같은 것들이 있다.
UPDATE pants SET color='blue' WHERE id=1;
이런 SQL 문을 실행한다고 했을 때, 해당 트랜잭션을 커밋하지 않아도 데이터/인덱스 버퍼에 값이 blue로 변경이 된다. 그리고 만약 사용자가 커밋하게 되면 현재 상태가 유지되고, 롤백하게 되면 언두 영역에 백업되어 있던 값이 다시 데이터/인덱스 버퍼에 복원되는 것이다.
INSERT나 UPDATE를 할 때 인덱스도 함께 업데이트를 해야하는 경우가 많은데 이때 인덱스가 이미 버퍼 풀에 있는 게 아니라 디스크로부터 읽어와야하는 경웅라면 일단 새 인덱스 레코드들을 Insert 버퍼에 저장해두고 나중에 반영한다.
SQL 처리 도중 데이터의 쓰기 작업은 지연(버퍼링)되어 처리되고, 읽기 작업은 즉시 처리된다. 그래서 INSERT, UPDATE, DELETE 쿼리로 데이터가 변경되는 경우, 데이터가 디스크의 데이터 파일로 완전히 저장될 때까지 기다릴 필요가 없다. 하지만 이것만으로는 우리가 흔히 듣는 ACIS를 완벽하게 보장할 수 없기 때문에 변경된 내용을 순차적으로 디스크에 기록한 로그 파일을 가지고 있다. 이를 Redo 로그라고 한다.