当前位置: 首页 > 科技观察

AutomaticallyTuningDatabases

时间:2023-03-13 18:53:09 科技观察

withMachineLearning作者:卡内基梅隆大学的DanaVanAken、AndyPavlo和GeoffGordon。该计划展示了学术研究人员如何使用AWSCloudCreditsforResearchProgram来推动他们的技术突破。数据库管理系统(DBMS)是任何数据密集型应用程序的关键部分。它们可以处理大量数据和复杂的工作负载,但也难以管理,因为有数百个“旋钮”(即配置变量)控制各种元素,例如用于缓存和写入磁盘的内存量。频率。组织通常不得不聘请专家进行调整,而专家对许多组织来说太贵了。卡内基梅隆大学数据库研究小组的学生和研究人员正在开发一种名为OtterTune的新工具,它可以自动为DBMS的“旋钮”找到正确的设置。该工具的目的是允许任何人部署DBMS,即使没有任何数据库管理专业知识。OtterTune不同于其他DBMS设置工具,因为它利用以前的DBMS调整知识来调整新的DBMS,从而显着减少时间和资源消耗。OtterTune通过维护从之前的调整中积累的知识库来实现这一点,该知识库用于构建机器学习(ML)模型以捕获DBMS对不同设置的响应。OtterTune使用这些模型来指导新应用程序的实验,建议配置以改善最终目标,例如降低延迟和增加吞吐量。在本文中,我们将讨论OtterTune的每个机器学习管道组件以及它们如何交互以调整DBMS设置。然后,我们评估OtterTune在MySQL和Postgres上的调优性能,将其最佳配置与DBA和其他自动化调优工具进行比较。OtterTune是由卡内基梅隆大学数据库研究小组的学生和研究人员开发的开源工具。所有代码都托管在Github上,并在ApacheLicense2.0许可下发布。OtterTune的工作原理下图显示了OtterTune的组件和工作流程。调整过程开始。用户通知OtterTune要调整的最终目标(例如,延迟或吞吐量)。客户端控制器程序连接到目标DBMS并收集AmazonEC2实例类型和当前配置。然后控制器启动最大观察期以观察和记录最终目标。controller观察后收集DBMS的内部指标,如MySQL磁盘页面读写次数。控制器将这些数据返回给调整管理器程序。OtterTune的调优管理器将收到的指标数据保存到知识库中。OtterTune使用这些结果来计算目标DBMS的下一个配置,该配置将返回给控制器,以及估计的性能增益。用户可以决定是继续还是终止调整过程。请注意,OtterTune为每个受支持的DBMS版本维护了一个“旋钮”黑名单,包括那些对调优不重要的(例如保存数据文件的路径),或者那些具有严重或隐藏后果(例如丢失数据)的部分.在调整过程开始时,OtterTune为用户提供了这个黑名单,用户可以添加他们希望OtterTune避免的其他“旋钮”。OtterTune有某些预先确定的假设,可能会对某些用户施加某些限制。例如,它假定用户具有管理员权限,以便控制器可以修改DBMS配置。否则,用户必须在其他硬件上部署数据库副本以进行OtterTune调优实验。这需要用户重现工作负载,或将查询转发到生产DBMS。有关全套预设和约束,请参阅我们的论文。Machinelearningpipeline下图是OtterTuneMLpipeline处理数据的过程,所有的观察都存储在知识库中。OtterTune首先将观察数据提供给工作负载特征组件,该组件识别一小组DBMS指标,这些指标最能捕捉不同工作负载的性能变化和显着特征。在下一步中,KnobIdentification组件生成一个排序的旋钮表,包括哪些旋钮对DBMS性能影响最大。OtterTune然后将所有这些信息“馈送到”自动调谐器(AutomaticTuner),它将目标DBMS的工作负载映射到知识库中最接近的工作负载,重用这些工作负载数据以生成更好的配置。让我们更深入地研究以下机器学习管道的每个组件。工作负载表征:OtterTune通过利用DBMS的内部运行时指标来表征工作负载的行为,这些指标准确地代表了工作负载,因为它们捕获了工作负载行为的多个方面。然而,许多指标是冗余的:一些代表不同单位的相同度量,另一些代表DBMS的一些独立组件,但它们的值是高度相关的。整理冗余指标对于降低机器学习模型的复杂性很重要。因此,我们根据相关性汇集了DBMS的指标,并选择了最具代表性的指标,特别是最接近中位数的指标。机器学习的后续组件将使用这些指标。旋钮识别:一个DBMS可以有数百个旋钮,但只有少数几个会影响性能。OtterTune使用一种流行的“特征选择”技术,称为Lasso,以确定哪些旋钮对系统的整体性能影响最大。使用此技术处理知识库中的数据,OtterTune能够确定DBMS旋钮的重要性顺序。OtterTune然后必须决定在提出配置建议时使用多少个旋钮,使用太多旋钮会显着增加OtterTune的调谐时间,而使用太少旋钮会难以找到最佳配置。OtterTune使用增量方法自动执行此过程,逐渐增加调优会话期间使用的旋钮数量。这种方法允许OtterTune首先使用少量最重要的旋钮探索和调整配置,然后再扩展以考虑其他旋钮。Auto-Tuner:Auto-Tuner组件使用两步分析来决定在每次观察会话后推荐哪种配置。首先,系统使用工作负载表征组件找到的性能数据来识别最接近当前目标DBMS工作负载的历史调优过程,比较两个指标以查看哪些值对不同的旋钮设置响应相似。OtterTune然后尝试另一种旋钮配置,将统计模型应用于收集的数据,以及知识库中最接近的工作负载数据。该模型让OtterTune预测DBMS在每种可能的配置下的行为方式。OtterTune调整下一个配置,在探索(收集信息以改进模型)和开发(目标指标值的贪婪方法)之间交替。用Python编写的OtterTune的实现。对于工作负载表征和旋钮识别组件,运行时性能不是主要考虑因素,因此我们使用scikit-learn来实现相应的机器学习算法。这些算法在后台进程中运行,将新生成的数据提取到知识库中。对于自动调整组件,机器学习算法至关重要。它需要在每次观察阶段完成时运行,以摄取新数据,以便OtterTune可以选择下一个旋钮进行测试。由于需要考虑性能,我们使用TensorFlow来实现。为了收集DBMS的硬件、旋钮配置和运行时性能指标,我们将OLTP-Bench基准测试框架集成到OtterTune的控制器中。实验设计我们将OtterTune为MySQL和Postgres所做的最佳配置与以下配置场景进行了比较以进行评估:默认:DBMS初始配置调优脚本:由开源调优建议工具进行的配置将Amazon开发人员管理的DBMS自定义配置为相同的EC2实例类型。我们在AmazonEC2Spot实例上执行了所有实验。每个实验都在m4.large和m3.xlarge类型的两个实例上运行:一个用于OtterTune控制器,一个用于目标DBMS部署。OtterTune调优管理器和知识库部署在20核128G内存的本地服务器上。工作负载使用TPC-C,这是一种评估在线交易系统性能的行业标准。评估我们测量了实验中每个数据库(MySQL和Postgres)的延迟和吞吐量,下表显示了结果。第一张图表显示了“第99个百分位延迟”的数量,代表完成交易的“最坏情况”时间。第二张图表显示了吞吐量结果,以每秒平均事务数衡量。MySQL实验结果与OtterTune生成的优化配置以及调优脚本和RDS的配置相比,OtterTune将MySQL的延迟降低了约60%,吞吐量提高了22%到35%。OtterTune还生成了一个几乎与DBA一样好的配置。在TPC-C负载下,只有少数MySQL旋钮显着影响性能。OtterTune和DBA的配置将这些旋钮设置为良好的值。RDS表现稍差,因为一??个旋钮被分配了一个次优值。调优脚本表现最差,因为只修改了一个旋钮。Postgres实验结果在延迟方面,相比Postgres的默认配置,OtterTune、调优工具、DBA和RDS的配置都取得了类似的提升。我们可以将此归因于OLTP-Bench客户端和DBMS之间的网络开销。在吞吐量方面,Postgres在OtterTune配置下比DBA和调优脚本高12%,比RDS高32%。结论OtterTune自动执行为DBMS配置旋钮寻找最佳值的过程。它通过重用先前调优过程收集的训练数据来调优新部署的DBMS。由于OtterTune不需要生成初始化数据集来训练其机器学习模型,因此调优时间大大减少。下一步是什么?为了顺应日益流行的DBaaS(其中无法远程登录到DBMS主机),OtterTune很快将能够自动探测目标DBMS的硬件功能,而无需远程登录。

猜你喜欢