MySQL은 크게 MySQL 엔진과 스토리지 엔진으로 나뉜다. MySQL은 사람의 머리 역할을 담당하고, 스토리지 엔진은 손발 역할을 담당하는데 이들의 구조에 대해 자세히 알아보자.

MySQL의 전체 구조는 위 다이어그램과 같이 정리할 수 있다. MySQL은 C, JDBC, ODBC, .NET의 표준 드라이버를 제공하며 이들을 이용해 대부분의 언어에서 MySQL을 사용할 수 있도록 지원되고 있다. MySQL은 크게 MySQL 엔진과 스토리지 엔진으로 나뉜다.
MySQL 엔진은 클라이언트의 커넥션 및 쿼리 요청을 처리하는 커넥션 핸들러, SQL 파서 및 전처리기, 쿼리 실행 최적화를 위한 옵티마이저가 중심을 이룬다.
스토리지 엔진은 실제 데이터를 디스크에 쓰거나 디스크에서 데이터를 읽어오는 역할을 담당한다. MySQL은 MySQL 엔진은 하나지만 스토리지 엔진은 여러 개를 동시에 사용할 수 있다.(InnoDB, MyISAM, Memory 등). 각 테이블을 정의할 때 어떤 스토리지 엔진을 사용할지 설정할 수 있다.
MySQL 엔진의 쿼리 실행기에서 데이터를 쓰거나 읽어야 할 때, 핸들러 API를 통해 스토리지 엔진에 I/O 요청을 보낸다. 이 핸들러 API를 만족하면 누구든지 스토리지 엔진을 구현해 MySQL에 추가할 수 있다.