关键词:
数据库参数调优
贝叶斯优化
领域知识
早停策略
功能感知
多任务高斯过程
摘要:
为了适应并满足各种业务场景的多样化需求,数据库系统配备了大量可调优的参数。这些参数对数据库的性能有着显著影响:在相同的应用场景中,不同的参数配置会使数据库呈现出显著的性能差异;在不同的应用场景中,即使是相同的参数设置,其性能表现也会有所不同。因此,当新的应用场景出现时,及时且精确地调优这些参数对于保障数据库的高效运行至关重要。在传统实践中,数据库的参数调优主要依赖于数据库管理员的手动操作。然而,随着参数数量的不断增加、工作负载的日益多样化以及云计算技术的持续发展,手动调优的复杂性和难度不断提升,从而对维持数据库的高性能构成了很大的挑战。为此,人们提出了自动化的数据库参数调优技术,以协助数据库管理员进行高效地参数调优。
目前的调优方法主要通过将数据库视为黑盒来优化其性能,忽视了领域知识和数据库功能,并在调优效率方面也有提升空间。首先,现有的调优方法在调优过程中经常忽视具有重要作用的领域知识。领域知识是基于数据库操作原理和长期实践经验总结出的规则。忽视这些规则可能会使调优方法推荐出违背领域知识的低收益配置,进而降低调优效率。因此,将领域知识与调优方法相融合是一个值得研究的问题。其次,当前的数据库参数调优方法通过完整地运行整个工作负载,以评估每个配置的实际性能。然而,这种方法在处理性能较差的配置时,因收益低且耗时长,严重拖慢了整个调优过程。因此,对性能不佳的配置实施早停策略,即在早期阶段识别并终止低效配置的执行,是提升调优效率的有效手段。最后,目前的数据库参数调优方法通常将数据库系统视为一个黑盒,主要通过收集和分析不同配置下的性能数据来寻找最佳配置。这种做法的一大缺陷在于,在优化数据库整体性能的过程中,可能会对未激活功能的相关参数进行调优。当该功能被激活时,这些未经验证的参数配置可能会对数据库性能造成不可预测的影响,甚至产生潜在风险。因此,在提升数据库整体性能的同时,也满足用户对数据库功能的精细调优需求,成为了一个待解决的关键问题。基于上述三个问题,本文的主要工作和贡献总结如下:
1针对领域知识融合问题,提出了BITune,其旨在将与参数设置相关的领域知识融入到表现突出的贝叶斯优化方法中,以进一步提升其调优效率:首先,BITune利用大语言模型,从复杂多样的官方数据库手册中提取了五种与参数设置相关的领域知识(即浅层领域知识):控制知识、动态知识、限制知识、瓶颈知识和竞争知识,这些知识在多数数据库中普遍存在。接着,针对贝叶斯优化代理模型精度不足的问题,BITune利用控制知识来优化代理模型,以使得该模型能更精确地反映配置与数据库性能之间的关系。最后,BITune利用动态知识、限制知识、瓶颈知识和竞争知识,指导贝叶斯优化的采集函数对未探索配置的效用评估,从而避免推荐出违反领域知识的低收益配置。
2针对工作负载早停问题,提出了ESTune,其通过提前终止较差配置的工作负载执行来提高当前迭代调优方法的调优效率:ESTune通过分析和实验验证了,对较差配置的实际性能引入微小的误差并不会影响调优方法的整体有效性。为此,ESTune针对较差配置的工作执行实施早停策略,即在早期阶段终止其执行,并使用预测的性能值代替实际测量值。为了确保预测值的准确性,ESTune采用了混合贝叶斯神经网络。该网络不仅生成数据库性能的预测值,还评估该预测值的不确定性(即方差),因此仅在预测值满足预定的置信度条件时,才将其用于替代实际性能。这一机制不仅保证了预测的可靠性,还节省了工作负载的执行时间。面对数据库参数调优环境中样本数据有限的挑战,ESTune采用了与模型无关的元学习方法来初始化混合贝叶斯神经网络的参数,从而使模型能够在少量样本条件下快速适应新的调优场景。
3针对多目标调优问题,提出了具备功能感知能力的调优方法OBTune,其在优化数据库整体性能的同时,也能对用户关注的数据库功能进行精细调优:在开始调优之前,用户需要根据自身的需求指定需要调优的数据库功能,并提供该功能的相关领域知识(即深层领域知识),包括调优功能的相关参数、调优指标、调优方向以及功能状态的监测方法。随后,在每次迭代过程中,OBTune会检查调优功能的运行状态,对于那些未激活功能的参数,将不参与后续调优,从而避免引入未经验证的参数值。最后,OBTune采用多任务高斯过程,将数据库的整体性能调优作为主任务,激活功能的性能调优作为辅助任务,从而有效地协调和优化了各个调优目标。综上所述,本文设计并实现了BITune、ESTune和OBTune。BITune对当前基于贝叶斯优化的调优方法进行了以下改进:将官方数据库文档中的控制知识、动态知识、限制知识、瓶颈知识及竞争知识融入到贝叶斯优化模型中。这一改进显著提高了基于贝叶斯优化方法的调优效率。ESTune对较差配置采用了早停策略,并用混合贝叶斯神经网