MySQL Server
包含两个不同部分:服务端和储存引擎。
查询优化发生在服务端,在储存引擎的 API 之上,分为 4 个阶段:
- 逻辑转换
- 基于代价优化的准备
- 基于代价优化
- 计划改良
将优化器明确划分为各层是逐步发展而来的。在早期的 MySQL 中,优化器只有较少的查询优化,而因为性能的原因,查询优化这一层没有很好地定义或分离。
随着新特性降低了可维护性时,就造就了重构的需求,历来的几个版本 5.6、5.7、8.0 都是这样实施的。将执行过程分层也为以后的新特性作了铺设,例如,计划缓存如果没有明确的分层就会很难实现,原因是连接的重用比较困难。
译自:
Server Architecture - The Unofficial MySQL 8.0 Optimizer Guide
网友评论