作用或背景
数据库系统参数调优是任一数据密集型业务都无法绕过的成本投入的重要方面,长期以来一直是一个十分困难的任务,不仅因为数据库管理系统通常支持成百上千个参数来控制整个系统的各个方面的特性(例如使用多少内存来做缓存,以何种频率将数据写入磁盘等),而且这些类型参数是不标准的(不同的数据库名称不同,作用也不完全相同),不是相互独立的(修改一个参数会影响其他),不是普适的(在一种工作负载下可以提升调优目标数据,对于另一种工作负载可能就是相反的效果)。更加困难的是,对于一种参数效果的信息通常来自于昂贵的数据库专家经验[1]。
为了应对上述挑战,诞生了智能调参这项技术领域,该技术的主要思路为:通过对数据库查询行为进行信息采样和建模,以自动化的方式利用机器学习算法和过去的数据库专家经验,对最重要的数据库参数配置进行推荐设置,持续迭代上述过程,对数据库系统进行调优。
技术源头
最早提出智能调参技术的来源已不可考,比较早期的自动调优技术多为利用统计学方法和根据专家经验尝试或遍历参数的配置空间[2][3],效率较低下
对该技术领域影响最大的研究成果一般认为是CMU的OtterTune[1:1],最早将机器学习算法和建模方式应用到数据库自动调优领域,并且形成了实际落地的产品,后来的研究成果和产品多为在此技术框架基础上进行不同程度的改进
国外技术现状
大部分国外数据库软件厂商(vendor)提供自己数据库产品的智能调参服务,例如Oracle的Oracle Expert(AutoTune), 微软的AutoAdmin,
其余多为小型创业公司,以CMU的OtterTune[1:2]为代表(国内绝大部分智能调参产品的技术和架构来源都是受该产品启发,在该论文基础上对某一个点或者多个点进行优化)
除此之外还有一些以大数据产品参数调优为商业化方向的创业公司,例如Unravel Data
国内技术现状
国内在该方向投入较多资源的主要为公有云厂商,阿里云[4]和腾讯云[5]已经分别发布了自己云上的智能调优产品;除此之外还有主要以学术研究为主的BestConfig[3:1],Qtune[6],华为的OpenGauss发布版自带的dbmind xtuner等
国外代表产品
Oracle的Oracle Expert(AutoTune), 微软的AutoAdmin, CMU的OtterTune[1:3],Unravel Data
国内代表产品
阿里云DAS ResTune,腾讯云CDBTune ,Qtune,华为OpenGauss的dbmind xtuner
详细描述
当前比较流行的智能调参技术主要思想是以机器学习技术决策参数调优的方向,该决策过程需要考虑特定工作负载和硬件条件,调优的数据库指标与数据库参数组合。由于工作负载特征难以描述,数据库参数繁多而相互依赖等原因,这里的核心技术难点是如何对工作负载建模,如何建立优化目标与参数组合之间的映射关系,如何将过去的调优经验转化为决策条件,以及如何在有限的时间范围内对调优配置进行有效决策
解决以上核心难点的技术方向主要有三大类:基于搜索的启发式方法、基于贝叶斯优化的方法、基于强化学习(Reinforcement Learning)模型的方法。
-
基于搜索的启发式方法:该类方法通常基于启发式思路,通过给定的规则算法进行搜索来找出优化参数,这一工作的代表是BestConfig[3:2]系统。这类方法依赖于对workload以及参数对性能影响的先验假设,但在实际中特别是云场景,往往很难为每个workload进行特殊优化和特征工程。这类方法在搜索一组新参数的时候,没有考虑到之前采样到数据的分布,因此效率不高。
-
基于贝叶斯优化的方法:该类方法的代表是iTuned[2:1]和CMU的Andy Pavlo实验室的SIGMOD17工作OtterTune[1:4]。贝叶斯优化将调参看作是一个黑盒优化问题,通过代理函数模拟参数和目标间的函数,并设计采集函数来最小化采样步数。这类方法没有考虑以优化资源为目标的调参,只考虑了优化峰值性能。在实际中,除了压测和大促的极端场景,通常用户对TPS是无感的,TPS往往达不到峰值,因此仅考虑性能作为目标还不够。OtterTune系统还提出了基于Internal Metric(数据库状态表的指标)的mapping的方案来利用已有数据,这种mapping方法利用来自同一硬件类型的历史数据,没有充分利用云厂商丰富的数据资源。另一方面,这种方式依赖于预测出来的Internal Metric的相似性计算,在数据点较少的情况下容易不准确。
-
基于强化学习的方法:这类方法是最近数据库调参的热门方向,主要包括SIGMOD18的工作CDBTune[7]和VLDB19的QTune[6:1]工作。通过将Internal Metrics(state)到Knobs(action)的关系抽象成一个policy neural network和一个value network来反馈,将数据库调参问题转化成一个马尔科夫决策过程,不断地自我训练,学习出最优参数。一方面,这类工作没有考虑优化资源。另一方面,更重要的是调参问题并不是一个带状态的马尔科夫决策过程,因为参数直接决定了数据库性能,不需要复杂的状态空间, 不同于强化学习需要通过解bellman equation来优化模型累计获得的Reward。在这些工作中,往往需要上千步迭代找出好的参数,这难以满足我们在生产环境中进行调参的要求。
到目前为止,智能调优还处于学术研究为主的阶段,未能形成成熟的有清晰市场需求的商业化产品。不过由于能够有效缓解当前主流数据库使用上的部分痛点,该技术还是具备较大的商业化潜力。特别是对于公有云业务存在规模化效应,智能调优技术更容易发挥其优势,例如阿里云ResTune将最小化资源使用和满足SLA加入带限制优化问题作为优化目标,在集团内部应用后大大降低了硬件成本[8]。
此外,由于智能调参严重依赖人工智能和机器学习模型算法的效率,将来相关领域的技术突破或者新的硬件技术落地(例如GPU,Optane)会令智能调参的效率有极大的提升,例如在相同时间推荐出性能更优的配置,或者在对目标实例影响更小的情况下持续调优
整体上看智能调优技术主要还是在外围对现有的主流数据库的参数进行调优,相对于下一代自治数据库来说,更偏向于一种技术积累和准备,是一类阶段性过渡技术产品,存在以下一些问题
- 调优时机,智能调优需要人工选择何时调优,数据库的负载将来可能会有很大变化,调优时可能也无法播放过去某段时间的工作负载
- 数据库状态变化,过去适合的参数配置,当前也许不再适合,智能调参对于何时应该重新调优无能为力
- 对目标性能调优的最佳选择不一定是参数调整,增加目标数据库吞吐量,或者降低请求时延存在其他决策方法,例如创建索引,或者重写query,而不是用参数调整去适应一个设计不合理的业务负载
据悉,国外的商业数据库公司(Oracle,微软,DB2等)主要精力还是在开发自己的下一代自治数据库上,旨在将智能调优技术直接嵌入到自治数据库中,在数据库的使用过程中自适应的对自身的参数进行持续动态调优,力求让数据库总是处于一个最优的运行状态,甚至预测将来的负载变化提前调优参数做好准备
国内公司,特别是互联网公有云厂商在智能调参技术上取得了很多优异的成果,甚至在一些智能调优产品落地上走在了国外厂商的前面,究其原因有以下几点:在工业界国内互联网公司积累了大量的数据库使用经验,而依赖的机器学习技术大多支持成熟而流行的开源深度学习框架,这些都是国内互联网公司的优势所在。
但是也需要注意到,智能调参本身还都是依附于主流的数据库产品(MySQL,PostgreSQL,etc.)存在的,从长远上看我国的数据库科技公司还是应该打造自己的下一代自治数据库产品,将目前积累的智能调参技术应用到拥有自主知识产权的数据库产品中,与国外的传统数据库公司展开竞争。
Dana Van Aken, Andrew Pavlo, Geoffrey J. Gordon, and Bohan Zhang. 2017. Automatic Database Management System Tuning Through Large-scale Machine Learning. In Acm International Conference on Management of Data. 1009–1024. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
SongyunDuan,VamsidharThummala,andShivnathBabu.2009.TuningDatabase Configuration Parameters with ITuned. Proc. VLDB Endow. 2, 1 (Aug. 2009), 1246–1257. ↩︎ ↩︎
Y.Zhu,J.Liu,MengyingGuo,YungangBao,WenlongMa,ZhuoyueLiu,Kunpeng Song, and Yingchun Yang. 2017. BestConfig: tapping the performance potential of systems via automatic configuration tuning. Proceedings of the 2017 Symposium on Cloud Computing (2017). ↩︎ ↩︎ ↩︎
重磅 | 数据库自治服务DAS论文入选全球顶会SIGMOD,领航“数据库自动驾驶”新时代 ↩︎
腾讯云CDB的AI技术实践:CDBTune ↩︎
Guoliang Li, Xuanhe Zhou, Shifu Li, and Bo Gao. 2019. QTune. Proceedings of the Vldb Endowment (2019) ↩︎ ↩︎
Ji Zhang, Yu Liu, Ke Zhou, Guoliang Li, Zhili Xiao, Bin Cheng, Jiashu Xing,Yangtao Wang, Tianheng Cheng, Li Liu, Minwei Ran, and Zekang Li. 2019. An End-to-End Automatic Cloud Database Tuning System Using Deep Reinforce- ment Learning. In Proceedings of the 2019 International Conference on Management of Data (Amsterdam, Netherlands) (SIGMOD ’19). Association for Computing Ma- chinery, New York, NY, USA, 415–432. ↩︎
前沿 | VLDB 2019论文解读:阿里巴巴大规模数据库智能参数优化的创新与实践 ↩︎