书接上回:从模型与数据集管理到GaussDB智能优化器解读

2025-05-11
来源:网络整理

该书遵循图书馆中的AI引擎:模型管理和数据集管理。图书馆中的AI引擎是从模型管理和数据集管理的两个方面引入的。本文将从智能优化者的角度来解释高智能技术。

4个智能优化器

随着数据库和人工智能技术变得越来越紧密,相关技术在学术数据库会议中经历了井喷。如下图所示,从2019年到2022年,AI ,AI配置调整,AI存储管理以及越来越多的技术的论文正在意识到从规则到智能的转换,从手动到自主,从经验到数据,从数据到数据,以及从离线到在线到在线。

通过对各个方面的学术和工业界的技术分析,我们可以了解到,在AI优化者领域,AI技术可以实现从规则到智能的技术创新,以及在生成计划的准确性和质量方面的定性溢出。例如,DB2实施证明,AI模型可以有效提高基本估计的准确性,并支持各种谓词,例如单点,范围和IN。基本估计的准确性已从30%提高到99%; AI成本模型的成本估计误差降低了10%至60%; AI计划生成TPS的平均增加为43%。在AI配置调整的领域,从手册到自主的转换逐渐实现。通过AI技术,内存设置,缓存设置,优化参数,并发等等,自动调整效果,效果接近甚至超过DBA调整,并且调谐时间从白天级别减少到分钟级别。在AI存储领域,IO技术极大地加速了IO的读写效率,通过智能缓存消除算法,我们可以有效地避免缓存计划使用错误;通过学习设置,评估搜索长度从O(logn)缩短到O(1)。

尽管AI技术在数据库内核级别探索了许多功能项目,但很少有商业产品真正实施。出色的技术困难是如何实现模型的普遍性。在任何情况或负载下,在一种情况下还是可以在一种情况下进行训练有效的模型;另一个困难是,推理效率很快,资源占据较低,并且在基于交易的数据库方案中仍然可以保证执行效率。

提出了一种创新的方法,可以使用轻巧的库机器学习模型与数据库内核模块相结合来构建智能优化器。其设计的主要结构如下图所示:

智能基数估计方案将轻质概率图模型集成到传统的统计信息模块中,在统计收集阶段训练模型,并将模型保存在系统表中,以供优化器使用。与友好公司的插入式模型培训解决方案相比,该解决方案具有高安全性和高性能的优势。高安全性在于一个事实,即数据不需要从数据库系统的安全边界导出,而高性能在于本机数据采集,模型培训和推断非常有效的事实。主要思想是数据库接受特定的分析查询语句,确定该语句是否包含多个列并调用数据统计模块。收到指令后,数据统计模块首先示例随附的列,然后对数据示例执行数据统计信息;如果数据统计数据模块发现打开了智能统计GUC参数,它将创建一个贝叶斯网络模型,包括使用聚合操作来统计并计算列之间的相关性,并使用chow-liu算法使用Chow-Liu算法来生成树贝叶斯网络结构,以培训模型的模型,以训练模型的模型,并将模型用于模型,并将模型用于模型,并将模型用于图形,并将模型列入模型,并将图形介绍到模型中。 桌子。

智能计划管理使用机器学习算法将数据库中的执行语句与最佳计划匹配。主要思想是首先计算查询中涉及的基表选择率,然后使用K最近的邻居算法选择缓存计划。如果输入查询基数功能超过了缓存,则执行计划检测,并使用优化器来生成自适应执行计划,并存在于计划缓存中。然后,系统会自动记录并分析查询执行时间,并自动选择是否启用自适应计划选择。对于不适用多计划选择的方案,它将自动选择是否使用。计划管理模块接受SQL后,提取了首选的选择率信息,包括基础表选择率,索引选择率和价值信息;随后的选择率信息基于计划匹配。如果选择成功,则计划将返回执行人;如果还没有缓存计划,或者匹配失败,则调用优化器进行计划检测(硬解析);如果尚未将检测计划添加到缓存中,请尝试添加缓存(最多10);如果它已经在缓存中,请尝试更新模型以提高准确性。最后,将检测计划传递给执行器。

4.1智能基数估计

智能基数估计的总体想法是将高频价值统计信息添加到模型中。高频行和相应的行计数通过MCV逻辑多路复用,并将其包装到数据采集界面中,以供贝叶斯网络模型来调用。在贝叶斯网络模型中,将高频值序列化到模型系统表中,其余数据是统计上的贝叶斯模型。在选择率估计阶段中,优化器首先检查输入查询条件是否与高频值匹配,如果匹配,则将直接返回结果;否则,贝叶斯网络模型用于估计;高频价值统计信息使用哈希表加速查询并使用缓存技术来避免内存获取和避免的成本。

(1)模型创建

如下图所示,此功能通过CN样本收集器获得内存数据样本结构,并通过用户提交命令或自动触发将其包装到数据源结构中。数据源结构摘要包含信息的两个部分,一个是可能的高频价值统计信息,另一个是完整的数据示例信息。高频价值信息包含大于1的频率的值(如果等于1,则不认为它是高频值),而完整的示例信息则被扁平为一个序列,并逐一发送到模型。因此,该模型可以根据获得频率确定当前读取数据是高频值还是普通样本数据。对于高频值统计,模型运算符将其直接序列化为模型,而对于普通样本数据,贝叶斯网络模型统计是根据不属于高频值的部分执行的。

(2)模型推理

如下图所示,在基本估计阶段中,系统首先将模型从磁盘读取到内存,然后将模型验证为存储器结构,并使用独立的内存上下文来缓存。对于每个多算当量的查询,首先查找高频值哈希表,如果发现,它将直接返回选择率P1(t),否则计算贝叶斯网络模型中查询条件的选择率P2(t),并最终返回P2(t) /(1.0-SUM(p1)),其中总和sum sum sum sum sum sum-fre nish sum-five -所有高高均为所有高率,使用此函数后,多列等效的选择速率估计优先级为,高频值从高频值哈希表中优选,并且通过贝叶斯网络获得了非高频值。如果创建或涵盖了非高频模型,请尝试使用多列NDV进行估算。如果统计信息和查询列不匹配,则使用多列函数依赖性。如果没有创建上述统计信息,请将条件添加到不匹配条件中,然后使用单列 +独立性假设估算。

(3)模型信息显示

创建一个新的系统函数(,),其中参数是整数和数组。获得输入参数后,系统功能将匹配系统表中的统计信息,并找到类型类型的统计信息行。如果找不到,反馈将直接失败;否则,相应的模型说明框架函数,即贝叶斯网络功能,从磁盘中读取模型,进行序列化并将信息重新组合到可读类型中,并将其构建到数组中以将其返回到系统函数。主要内容包括贝叶斯网络拓扑,高频值及其选择率,单列上的桶类型,直方图或MCV边界值以及每个存储桶中每个可能值的概率值。其余的还包括一些用于模型的一般信息,例如模型训练时间,模型超参数,模型创建时间等。

4.2智能计划管理

当前的执行计划主要是通过(计划),(计划)或(计划)生成的,但是所有三个计划都有问题。由于无法窥视变量,该计划无法适应不同的查询。由于路径选择优化多次执行且支持的方案有限,因此有必要在这三种计划策略中进行选择。首先,此功能对不同的候选策略进行了一定数量的尝试,并根据每种策略的执行反馈信息确定最有效的策略。有两个核心问题:

策略试用计划:依次尝试几次,并记录每个策略的平均执行时间。为了避免尝试可能导致的性能降解,每个策略的尝试数是由算法动态确定的。此外,当所选策略绩效显着下降时,将自动重新启动其他候选策略的尝试(根据算法确定重新启动时机)。

策略选择:它将用作性能基准,并将执行时间与相同的比较。如果 /性能高于(或关闭),请选择此策略。可以看出,优先级高于。请注意,根据现有政策决策,此策略是次要选择。出于安全原因,当现有策略制定决策时,此策略不会进行任何更改。

计划选择的总体过程如下图所示:

对于和多计划的选择,在记忆消耗,分析成本和执行绩效中分析了不同的计划选择策略:

战略

描述

记忆消耗

分析成本

执行性能

致电优化器生成计划

中间

高的

在不同的情况下,最佳策略是不同的,并且存在不确定性。但通常认为这是最好的表现。

使用默认参数生成的通用计划

低的

没有任何

多计划选择

根据选择率从多个缓存计划中选择最佳匹配

高的

低的

选择适当的执行计划后,计划生成策略切换的时序图如下:

对于每个查询模板,默认值是作为基准执行成本的10倍,然后将有一定的可能性来探索其他计划策略。如果您发现其他策略的估计执行时间小于当前策略,则会发生转换。特定的探索频率将根据大数字定理确定,以便估计的期望与整体期望之间的误差小于一个边界。

在计划的自适应选择中,核心功能包括两个,即自适应策略选择和自适应检测时间。

(1)自适应策略选择

策略选择者根据每个策略反馈的绩效指标(执行时间)尝试不同的策略和选择。初始化,策略的性能指标为0。当查询到达时,选择其计划策略的过程如下:

步骤1:如果执行次数

步骤2:如果计算的性能指标小于返回;否则,转到步骤3。

步骤3:如果计算的性能指标小于返回;否则。

注意:每个执行将反馈并更新当前策略的执行时间;执行10次的目的是获得执行性能基准。因此,仅当其执行效率不低于其执行效率时才选择。此外,优先级是更高的,这是由于需要可变的窥探,这比选择要消耗更多的计算能力和内存资源。

自适应策略选择机制,如果确定总体绩效很高,则将倾向于实施。

(2)自适应检测数量

或者,当检测次数很少时,由于性能抖动,可能会消除它。为了避免此问题,该方案使用概率置信算法来确定检测数量是否足够。如果检测数量不足,将执行更多检测以获取更准确的性能指标。

假设执行N候选策略(/)的平均时间为X,并假设执行任何n性能的预期概率是x。如果P小于阈值,则意味着性能不太可能是X,您可以安全地消除候选策略;否则,这意味着由于随机错误可能会低估X,并且将执行更多检测。预期概率P是根据大量定律计算的:

如果u是平均执行时间,则x是候选策略的平均执行时间,偏差σ= x/u;收养的数量C = n。该公式表明,当样本数量增加时,σ将在指数速度下接近1。

当算法发现性能降解时,它将提供 /更多检测机会。这有效地避免了由于检测随机性或性能波动而导致的/误差。该公式计划依赖的输入值可以有效地获得,并且计算效率不是主要的性能瓶颈。

分享