TDSQL for MySQL SQL快速下推框架
引言
架构简介
我们对目前腾讯云官网售卖的“分布式 TDSQL MySQL InnoDB 引擎”版本的计算引擎,进行了架构重构与升级。新的计算引擎整体兼容 MySQL 8.0.26 内核,支持了CTE、存储过程等更为丰富的 SQL 特性与部分 Oracle 兼容语法,同时,我们也在计算下推框架上做了很多工作,来提升整体的性能 QPS。在 TDSQL 中,为了满足不同业务场景的计算下推需求,以减少数据传输和处理的开销,实现卓越的下推性能,在新的计算引擎下推框架中,我们提供了两种机制 ,分别是:1. 快速下推(Fast Query Shipping,FQS);2. 并行执行(Parallel Query,PQ)。从业务模型来说,前者主要针对基础的高并发 TP 型业务,提供 SQL 快速下推执行的能力,后者主要针对复杂的 SQL(复杂子查询,查询物化,多表 Repartition 的Join 等),提供并行执行的能力。此外,我们通过多存储引擎接口 Secondary Engine集成了LibraDB AP 计算引擎,来提供一站式的 HTAP 计算能力本文主要介绍 FQS 快速下推计算框架,关于 PQ 并行框架的介绍,可以关注后续我们的推文。
执行框架
整个分布式计算下推框架的作用对象为 DML 语句,计算引擎对 DML 语句的处理逻辑,可以被分为两个阶段:1. 1、Prepare 阶段:这个阶段会进行基本的开表操作,并完成代价优化之前的所有准备工作,包含:● 1)解析表和列信息。● 2)解析所有表达式,包括 WHERE 子句、连接条件、GROUP BY 子句HAVING 子句、ORDER BY 子句、LIMIT 子句、递归地准备所有子查询。● 3)对抽象语法树应用永久变换,包括半连接变换、派生表变换、消除常量值和冗余子句。 2、Execute 阶段:这个阶段会对 Query_block 进行基于代价的物理优化,产生物理执行计划,并进入到执行器迭代执行。FQS 下推框架,实现了新的 Prepare 与 Execute 处理逻辑来接管原本单机的处理。
Prepare阶段