关键词:
参数调优
数据库系统
多任务学习
高斯过程
摘要:
为了实现最佳性能,数据库的配置参数必须根据部署的硬件环境和运行负载来调整。以往的数据库参数自动调优方法将数据库实例视为一个黑盒,并通过收集和观察各种配置下的性能数据来自动找到最佳配置参数。然而,这些基于黑盒的方法存在一些局限性。首先,它们通过观察数据库的整体性能(例如每秒事务吞吐量)来判断一组参数的质量,但无法准确识别哪些参数导致性能变化。在自动调优过程中,也会调整无关的参数。其次,以前的方法迭代搜索更好的配置,但每次迭代只花费很短时间。这对于实际生产环境中的复杂数据库(例如分布式数据库)来说远远不够,因为短时间内仅触发了很少的数据库功能模块。第三,数据库的功能是共同设计和维护其整体性能的。每个功能模块都有自己的度量指标来评估其状态。仅使用整体性能来调整所有参数无法使多个功能模块良好地协同工作。为了解决这些局限性,本文提出了模块化数据库系统的方法,并开发了一个功能感知的数据库参数自动调优系统,称为OBTune系统。OBTune采用多任务学习的思想,将数据库实例的调优任务分解为各种功能模块的调优任务。每个功能模块的参数调优任务被视作辅助任务,以帮助调整数据库整体性能。通过不同任务之间的信息共享,OBTune可以准确地找到哪个模块的参数导致性能变化,并避免调整无关的参数。在分布式数据库Ocean Base和传统数据库Postgre SQL上的实验结果表明,OBTune可以在复杂工作负载触发数据库的多个功能和优化数据库整体性能的同时,对参数进行精确调整,提升各个功能模块的性能,并且有良好的调优效果。本文的贡献总结如下。(1)设计了虚假参数实验,验证现有方法的局限性:设计了虚假参数并将其置入现有调优工具的参数调优列表中启动调优任务,观察虚假参数的调优结果。实验结果证明了现有基于黑盒自动调优方法会调整与整体数据库性能变化无关的参数。这可能将不合理的参数应用于在线数据库实例,从而引入潜在风险。(2)使用多任务高斯过程,解决调整无关参数的问题:将多任务学习映射到参数自动调优场景,应用多任务高斯过程解决调优问题。在参数自动调优场景下,经典的高斯过程有着高质量的特性,但无法处理多维输入、输出和获取多个任务间的潜在联系。多任务高斯过程是多任务学习在高斯过程背景下的拓展,利用多任务高斯过程很好的解决了调优场景存在的问题。(3)开发了功能感知的调优系统OBTune,实现数据库整体性能和各个功能模块的共同调优:提出了数据库功能的模块化方法,实现了功能感知的调优系统OBTune,并在分布式数据库Ocean Base和传统数据库Postgre SQL上进行了多组实验评估。实验结果表明,OBTune可以有针对性和准确性地调整触发功能模块的参数,相较于其他调优系统调优效果明显。本文以第三方工具的形式实现了功能感知的数据库参数自动调优系统OBTune,并通过相关实验验证了基于模块化和多任务学习的参数调优方法能够同时优化数据库整体性能和多个功能模块性能。并且不会调整与性能无关的参数,避免在数据库中引入潜在问题。同时,在分布式数据库Ocean Base和传统数据库Postgre SQL上与其他调优系统进行的多组对比实验验证了功能感知的调优系统OBTune调优效果的优越性。