openGauss源码解析(167)
openGauss源码解析:AI技术(14)
2. 基于执行计划的MART模型
图8-7 基于执行计划MART模型的系统架构图
基于执行计划的MART(multiple additive regression trees,多重累加回归树)模型如图8-7所示,主要包含离线训练模块和在线预测模块。他们的功能如下所示。
离线训练阶段:针对数据库每种类型的算子(如Table Scan,Merge Join,Sort...),分别训练其对应的模型,用于估算此算子的开销。此外,使用单独的训练阶段,可为不同的算子选择适当的缩放函数。最后,形成带缩放函数的不同的回归树模型。
在线预测阶段:计算出执行计划中所有算子的特征值。然后,使用特征值为算子选择合适的模型,并使用它来估算执行时间。
整个功能的流程如图8-8所示。
图8-8 基于执行计划MART模型的流程图
基于执行计划MART模型技术调优技术的缺点。
(1) 泛用性较差,强依赖训练好的算子模型,遇到例如用户自定义函数的未知语句时,预测效果会较差。
(2) 缩放函数依赖于先验结果,对于超出范围的特征值效果无法保证。
(3) 预测过程依赖待测语句的执行计划,加重了数据库的负荷,很难推广到OLTP场景中。
3. 基于执行计划的DNN模型
图8-9 基于执行计划的结构化DNN模型的算法架构图
该技术方案的系统架构图与图8-5类似,区别在于与图8-5中的Model Building模块中选择的算法不同。如图8-9所示,是现有技术的算法架构图,算法的概述如下。
该算法依然是将执行计划中的算子信息输入到深度学习网络中,从而对执行时间进行预测的。对于每个算子,收集左右子树的向量化特征、优化器代价及执行时间,输入与之对应的模型中,预测该算子的向量化特征及执行时间等。图8-9中显示了一个join操作的预测流程,其左右子树均为Scan算子,将两个Scan算子通过对应的模型预测出的向量化特征、执行时间,以及该join算子的优化器评估代价作为入参,输出join算子模型得到该操作的向量化特征及预测出的执行时间。上述过程是个自底向上的过程。
整个功能的流程如图8-10所示。
图8-10 基于深度强化学习执行时间预估流程图
上述技术的缺点。