一条 SQL 查询语句是如何执行的?
基础架构
MySQL 基础架构分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等大多数核心服务。存储引擎层负责数据的存储和提取,支持 MyISAM、InnoDB 等引擎。

执行一条 SQL 查询语句时,
- 先用连接器跟客户端建立连接。
- 然后,查询缓存,如果命中就直接返回结果。
- 如果不命中,就用分析器对 SQL 语句进行分析。
- 然后,用优化器制定执行方案,比如从表的多个索引中选择一个最合适的。
- 最后,执行器执行,返回结果,由存储引擎存储,提供读写。
更新流程跟查询类似,不过更新还涉及 redo log 和 binlog 两个日志。
存储引擎
MyISAM 和 InnoDB,区别在于:
- MyISAM:特点是索引文件和数据文件分开,可以缓存更多索引,查询效率较高。
缺点是不支持事务、外键,使用表锁。适用于读多写少的低并发场景。 - InnoDB:是 MySQL 5.5 后的默认存储引擎。基于聚簇索引建立,特点是支持事务、外键,使用行锁和 MVCC 提高了并发效率,适用于高并发场景。

浙公网安备 33010602011771号