聊一聊GaussDB智能优化器
本篇将从智能优化器方面解读GaussDB高智能技术。
智能优化器
随着数据库与AI技术结合的越来越紧密,相关技术在学术界的数据库各大顶会中出现井喷现象。如下图所示,从2019年至2022年,AI优化器、AI配置调优、AI存储管理及DB4AI等领域的论文逐年递增,越来越多的技术实现从规则到智能的转换、从人工到自治的转换、从经验到数据的转换、从离线到在线的转换。

通过对学术界和工业界在各方面的技术分析,我们可以获悉,在AI优化器领域,通过AI技术可以实现从规则到智能的技术创新,在生成计划的准确性和质量上有质的飞越。例如DB2落地证明AI模型能够有效提升基数估计准确性,已支持单点、范围、in等多种谓词,基数估计的准确率由30%提升到99%;AI代价模型Cost估计误差减少10%到60%;AI计划生成TPS平均提升43%。在AI配置调优领域,逐渐实现由人工到自治的转变,由AI技术,自动调优内存设置、缓存设置、优化器参数、并发度等,效果接近、甚至超过DBA调优,调优时间由天级下降到分钟级。在AI存储领域,通过IO技术极大加速IO的读写效率,通过智能缓存淘汰算法,有效避免缓存计划使用错误;通过学习型index设置,index评价查找长度由O(logn)下降为O(1)。
尽管AI技术在数据库内核层面探索的功能项很多,但鲜有真正落地的商业产品。突出的技术难点是如何做到模型的普适性,在一个场景或者负载下训练有效的模型,是否可在任意场景或者负载下均有效;另一个难点是推理效率快捷且占用资源低,在交易型数据库场景下,执行效率仍有保障。
GaussDB创新型提出利用轻量级库内机器学习模型结合数据库内核模块构建智能的优化器。其设计的主体架构如下图所示:

其中智能基数估计方案将轻量概率图模型融合进GaussDB的传统统计信息模块,在统计收集阶段进行模型训练,并且将模型保存在系统表中供优化器使用。此方案相比于友商的外挂式模型训练方案来说,具有高安全和高性能的优势。高安全在于数据不需要导出数据库系统安全边界,高性能在于原生的数据获取和模型训练和推理十分高效。主要思路是数据库接受特定分析查询语句,判断语句是否包含多列并且调用数据统计模块;数据统计模块在接收指令之后首先针对包含的列进行数据采样,然后针对数据样本进行数据统计;如果数据统计模块发现智能统计GUC参数开启,则进行贝叶斯网络模型的创建,包括利用聚合操作统计并计算出列两两之间的相关性、使用chow-liu算法生成一个树型贝叶斯网络结构、调用贝叶斯网络算子通过遍历数据样本进行模型参数训练,并且将模型参数已二进制的形式存入系统模型表中。
智能计划管理是利用机器学习算法,将数据库中的执行语句匹配到最佳计划中。主要思路是先计算出查询涉及到的基表选择率,然后使用K近邻算法选择缓存的计划。如果输入的查询基数特征超出缓存的范围,那么就进行计划探测,利用优化器生成自适应的执行计划并且存在计划缓存中。而后系统自动对查询执行时间进行记录和分析并且自动选择是否启用自适应计划选择,并且针对不适用多计划选择的场景,也会自动为其选择使用gplan还是cplan;计划管理模块接受到SQL后,首选对query的选择率信息进行提取,包括基表选择率,索引选择率,和limit offset取值等信息;后续基于query的选择率信息进行计划匹配。如果选择成功,则返回计划给执行器;如果尚无缓存计划、或匹配失败,则调用优化器进行计划探测(硬解析);如果探测计划尚未加入缓存,则尝试加入缓存(最多10个);如果已在缓存中,则尝试更新模型以提升准确率。最后,将探测计划传递给执行器。

浙公网安备 33010602011771号