MySQL#Select语句执行过程
服务端程序架构
MySQL 是典型的 C/S 架构,即 Client/Server 架构,服务器端程序mysqld
。
Select语句执行过程
连接层
客户端和服务器端建立连接,客户端发送 SQL 至服务器端
SQL层
SQL语句处理
- 查询缓存: 缓存命中该SQL执行结果直接返回。
表数据更新时缓存会清空
,适用于表数据是静态的 或者表数据很少发生变化的场景 (MySQL8.0后废弃)- 解析器:对 SQL 语句进行语法分析、语义分析
- 优化器:确定 SQL 语句的执行路径,比如索引选择…
- 执行器:执行前用户权限校验,权限校验后执行 SQL 查询并返回结果
存储引擎层
用途:与数据库文件打交道,负责数据的存储和读取。
特点:存储引擎以插件形式引入,由开发人员自由选择,每个存储引擎适合的场景不同。
常见存储引擎:
- MyISAM 存储引擎:不支持事务,不支持外键(MySQL 5.5 版本之前默认的存储引擎)
- InnoDB 存储引擎:支持事务、行级锁定、外键约束等 (MySQL 5.5 版本之后默认的存储引擎)
- Memory 存储引擎:使用系统内存作为存储介质,如果mysqld 进程崩溃,则会导致所有的数据丢失,适用于临时存储数据场景
- NDB 存储引擎:也叫NDB Cluster 存储引擎,适用于 MySQL Cluster 分布式集群环境
- Archive 存储引擎: 良好的压缩机制,在请求写入时会进行压缩。适用于文件归档系统
注意:数据库的设计在于表的设计, MySQL 中每个表的设计都可以采用不同的存储引擎