本文是卡耐基梅隆大年夜学的 Dana Van Aken、Andy Pavlo 和 Geoff Gordon 所写。这个项目展示了学术研究人员若何应用 AWS Cloud Credits for Research Program 来助力他们的科技冲破的。
数据库治理体系(DBMS)是任何数据密集应用的关键部分。它们可以处理大年夜量数据和复杂的工作负载,但同时也难以治理,因为有成百上千个“旋钮”(即设备变量)控制着各类要素,比如要应用若干内存做缓存和写入磁盘的频率。组织机构经常要雇佣专家来做调优,而专家对很多组织来说太过昂贵了。卡耐基梅隆大年夜学数据库研究组的学生和研究人员在开辟一个新的对象,名为 OtterTune,可以主动为 DBMS 的“旋钮”找到合适的设置。对象的目标是让任何人都可以安排 DBMS,即使没有任何数据库治理特长。
机械进修流水线
本文中,我们将评论辩论 OtterTune 的每一个机械进修流水线组件,以及它们是若何互动以便调优 DBMS 的设置。然后,我们评估 OtterTune 在 MySQL 和 Postgres 上的调优表示,将它的最优设备与 DBA 和其他主动调优对象进行比较。
OtterTune 是卡耐基梅隆大年夜学数据库研究组的学生和研究人员开辟的开源对象,所有的代码都托管在 Github 上,以 Apache License 2.0 许可证宣布。
OtterTune 工作道理
下图是 OtterTune 组件和工作流程
调优过程开端,用户告诉 OtterTune 要调优的最注目标(比如,延迟或吞吐量),客户端控制器法度榜样连接目标 DBMS,收集 Amazon EC2 实例类型和当前设备。
然后,控制器启动初次不雅察期,来不雅察并记录最注目标。不雅察停止后,控制器收集 DBMS 的内部指标,比如 MySQL 磁盘页攫取和写入的计数。控制器将这些数据返回给调优治理器法度榜样。
OtterTune 用 Python 编写。
OtterTune 的调优治理器将接收到的指标数据保存到常识库。OtterTune 用这些结不雅计算出目标 DBMS 的下一?设备,连同预估的机能晋升,返回给控制器。用户可以决定是否持续或终止调优过程。
留意
OtterTune 对每个支撑的 DBMS 版本保护了一份“旋钮”黑名单,包含了对调优可有可无的部分(比如保存数据文件的路径),或者那些会产生严重或隐性后不雅(比如丢数据)的部分。调优过程开端时,OtterTune 会向用户供给这份黑名单,用户可以添加他们欲望 OtterTune 避开的其它“旋钮”。
OtterTune 有一些预定假设,对某些用户可能会造成必定的限制。比如,它假设用户拥有治理员权限,以便控制器来修改 DBMS 设备。不然,用户必须在其他硬件上安排一份数据库拷贝给 OtterTune 做调优实验。这请求用户或者重现工作负载,或者转产临盆 DBMS 的萌芽。完全的预设和限制请看我们的论文 。
下图是 OtterTune ML 流水线处理数据的过程,所有的不雅察结不雅都保存在常识库中。
OtterTune 先将不雅察数据输送到“工作流特点化组件”(Workload Characterization component),这个组件可以辨认一小部分 DBMS 指标,这些指标能最有效地捕获到机能变更和不合工作负载的明显特点。
OtterTune 跟其他 DBMS 设置对象不合,因为它是应用对以前的 DBMS 调优常识来调优新的 DBMS,这明显降低了所耗时光和资本。OtterTune 经由过程保护一个之前调优积聚的常识库来实现这一点,这些积聚的数据用来构建机械进修(ML)模型,去捕获 DBMS 对不合的设置的反竽暌功。OtterTune 应用这些模型指导新的应用法度榜样实验,对晋升最注目标(比如降低延迟和增长吞吐量)给出建议的设备。
下一步,“旋钮辨认组件”(Knob Identification component)生成一个旋钮排序表,包含哪些对 DBMS 机能影响最大年夜的旋钮。OtterTune 接着把所有这些信息“喂”给主动调优器(Automatic Tuner),后者将目标 DBMS 的工作负载与常识库里最接近的负载进行映射,从新应用这份负载数据来生成更佳的设备。
我们来深刻发掘以下机械进修流水线的每个组件。
旋钮辨认: DBMS 可以有几百个旋钮,但只有一部分影响机能。OtterTune 应用一种风行的“特点-选择”技巧,叫做 Lasso,来断定哪些旋钮对体系的┞符体机能影响最大年夜。用这个技巧处理常识库中的数据,OtterTune 得以肯定 DBMS 旋钮的重要性次序。
接着,OtterTune 必须决定在做出设备建议时应用若干个旋钮,旋糯竽暌姑的太多会明显增长 OtterTune 的调优时光,而旋糯竽暌姑的太少则难以找到最好的设备。OtterTune 用了一个增量办法来主动化这个过程,在一次调优过程中,慢慢增长应用的旋钮。这个办法让 OtterTune 可以先用少量最重要的旋钮来摸索并调优设备,然后再扩大年夜范围推敲其他旋钮。
主动调优器: 主动调优器组件在每次不雅察阶段后,经由过程两步分析法来决定推荐哪个设备。
起首,体系应用工作负载特点化组件找到的机能数据来确认与当前的目标 DBMS 工作负载最接近的汗青调优过程,比较两者的度量值以确认哪些值对不合的旋钮设置有类似的反竽暌功。
然后,OtterTune 测验测验另一个旋钮设备,将一个统计模型应用到收集的数据,以及常识库中最切近的工作负载数据。这个模型让 OtterTune 猜测 DBMS 在每个可能的设备下的表示。OtterTune 调优下一?设备,在摸索(收集用来改进模型的信息)和应用(贪婪地接近目标度量值)之间瓜代进行。
实现
推荐阅读
Intel发货Stratix 10 SX FPGA:唯一四核A53
11月5日Intel宣布已经开端出货Stratix 10 SX FPGA可编程芯片,这是今朝独一集成四核心ARM A53 CPU处理器的FPGA,也是Intel收购Altera之后的一大年夜结不雅。Intel声称它的机能比上代产品>>>详细阅读
本文标题:通过机器学习来自动调优数据库
地址:http://www.17bianji.com/lsqh/38549.html
1/2 1