一 概述
MySQL 主要分为 Server 层和引擎层,Server 层主要包括连接器、查询缓存(MySQL 8.0 版本后移除,因为这个功能不太实用)、分析器、优化器、执行器,同时还有一个日志模块(binlog),这个日志模块所有执行引擎都可以共用,redolog 只有 InnoDB 有。
引擎层是插件式的,目前主要包括,MyISAM,InnoDB,Memory 等。
SQL 等执行过程分为两类,一类对于查询等过程如下:权限校验(连接器)—>查询缓存—>分析器(词法分析)—>优化器—>权限校验(是否有查询权限)—>执行器—>引擎(查询)
对于更新等语句执行流程如下:分析器——>权限校验——>执行器——>引擎——>redo log prepare——>binlog——>redo log commit (只有InnoDB引擎有redo log)