查询执行模式
云原生数据仓库AnalyticDB MySQL版数仓版支持Interactive和Batch两种查询模式,结合资源组功能可实现混合负载。
背景
云原生数据仓库AnalyticDB MySQL版(简称AnalyticDB for MySQL版),是阿里巴巴自主研发的海量数据实时高并发在线分析云计算服务,可以对海量数据进行即时的多维分析透视和业务探索。AnalyticDB for MySQL的执行引擎是MPP DAG的融合执行引擎,能够充分利用内存进行极速计算。分析型查询的负载比较多样化,既有低延迟实时分析查询,也有高吞吐的清洗类查询(Extract-Transform-Load)。基于全内存的计算,实时分析查询可以获得比较低的查询延迟。而清洗类查询对查询延迟要求不高,期望更低的处理成本,更高的处理吞吐。
为此AnalyticDB for MySQL数仓版在原有的Interactive执行模式(全内存计算)之上,推出了新的Batch执行模式。相比较于全内存计算的Interactive模式,Batch模式可以对查询的任务进行分批执行,每个子任务在内存不足的情况下,自适应地将内存数据换出到磁盘,降低数据计算的成本,提升数据处理的容量上限。
Interactive模式
AnalyticDB for MySQL接收到用户查询后,会对查询进行解析,由优化器生成执行计划,执行引擎接收到执行计划后,会生成对应的分布式执行任务,这些分布式执行任务会根据执行计划描述的逻辑进行计算。执行引擎负责调度、管理这些分布式执行任务。
在Interactive模式下,一个查询的所有分布式执行任务会被同时调度执行,每个任务完全基于内存进行计算,数据以流水线的方式在上下游任务之间进行流转。
适用场景:适用于对延迟敏感的实时分析查询。
Batch模式
在Batch模式下,执行引擎会根据分布式执行任务间的依赖关系,对任务进行分批调度执行。每个任务进行计算时,当内存不足时,会自适应把数据换出到磁盘提升数据处理的容量上限。计算产生的中间结果数据,也会写入到磁盘中。当下游任务被调度执行时,会从磁盘读取中间结果数据并进行计算。
适用场景:适用于执行时间长、计算数据量大的查询。例如:清洗类查询(Extract-Transform-Load)。
默认执行模式
版本 | 产品系列 | 默认执行模式 | 是否支持Batch模式 |
数仓版 | 预留模式 | Interactive | 否 |
弹性模式 | 是 |
切换执行模式
切换实例的执行模式:
切换实例的执行模式为Interactive模式:
set adb_config query_type=interactive
切换实例的执行模式为Batch模式:
set adb_config query_type=batch
说明一般情况下,不建议将实例级别的执行模式切换为Batch,您可在查询级别、或资源组级别将执行模式切换为Batch。
切换资源组的执行模式,请参见修改资源组。
混合负载
AnalyticDB for MySQL的资源组功能提供了实例内部多租户的能力。通过将查询执行模式与资源组相结合,您可以对实例内部的不同资源组设置不同的查询执行模式,从而具备一个实例内部同时处理不同查询负载的混合负载能力。详情请参见资源组介绍。