写点什么

亚马逊推出机器学习工具给数据库调优,DBA 要失业了?

  • 2017-06-07
  • 本文字数:4430 字

    阅读完需:约 15 分钟

数据库管理系统(简称 DBMS)无疑是任何数据密集型应用程序当中最为重要的组成部分,其肩负着处理大量数据以及高复杂性工作负载的重任。然而,数据库管理系统本身却往往难于管理,因为其中通常包含数百种配置“旋钮”,用于控制诸如缓存内存分配量以及存储介质数据写入频率等要素。各类企业一般需要聘请专业人士以协助相关调配工作,但对于大多数企业而言,此类专业人才的开价亦相当高昂。

面对这一难题,卡耐基 - 梅隆大学数据库小组(Carnegie Mellon Database Group)的学生及研究人员们共同开发出一款名为 OtterTune 的新型工具,其能够以自动化方式识别出最适当当前数据库管理系统配置需求的设置组合。其目标在于有效简化用户对 DBMS 的部署流程,确保那些在数据库管理层面不具备任何专业知识的朋友亦能轻松完成任务。

OtterTune 与其它 DBMS 配置工具之间的主要差别在于,其能够利用自此前 DBMS 部署工作当中积累到的知识指导新系统的配置工作。这一设计思路显然降低了新 DBMS 部署方案在调整当中所需要的时间与资源投入。而为了实现这一目标,OtterTune 专门建立起一套数据库,用以收集从此前调节会话中提取到的重要信息。其利用这部分数据建立机器学习(简称 ML)模型,用以捕捉 DBMS 在面对不同配置方案时作出怎样的响应。OtterTune 还利用这些模型以指导新型应用程序的配置实验,并提供推荐设置以提升目标运作效果(例如减少延迟或者提高数据吞吐量)。

在今天的文章中,我们将探讨 OtterTune 机器学习管道当中的每个组成部分,同时展示其如何彼此交互以实现 DBMS 配置调节。在此之后,我们还将立足 MySQL 与 PostgreSQL 评估 OtterTune 的调节效果,包括将其最佳配置方案与数据库管理员(简称 DBA)以及其它自动化调节工具给出的答案进行比对。

OtterTune 是一款开源工具,由卡耐基 - 梅隆大学数据库小组的学生及研究人员们共同开发而成。其全部代码皆可点击此处通过 GitHub 访问,且基于 Apache License 2.0 许可。

OtterTune 工作原理解析

以下示意图用于解释 OtterTune 中的各组件与工作流。

在开始一轮新的调节会话时,用户首先需要告知 OtterTune 此番优化的具体目标(例如面向延迟抑或数据吞吐量)。其客户端控制器将接入目标 DBMS 并收集其 Amazon EC2 实例类型与当前配置等相关信息。

在此之后,该控制器会开始第一轮观察周期,在此期间其将观察 DBMS 以及与既定目标相关之各项记录。在此轮观察周期结束后,控制器将从 DBMS 当中收集各类内部指标,例如 MySQL 自磁盘处读取之页面以及向磁盘中写入之页面计数。该控制器随后会将目标信息与内部指标发送回调节管理器当中。

当 OtterTune 的调节管理器接收到这些指标后,其会将相关数据存储在自有存储库内。OtterTune 利用这些结果计算出控制器应在目标 DBMS 上安装的下一套配置方案。具体配置方案由调节管理器交付至控制器处,同时确定运行后的预期改进效果。这时,用户即可决定继续抑或中止当前调节会话。

注意事项

OtterTune 为其支持的每个 DBMS 版本皆设立有一套调节黑名单。此份黑名单中囊括了各类无法调整的项目(例如 DBMS 存储文件的路径名称)或者可能引发严重乃至隐藏后果的选项(例如可能导致 DBMS 遭遇潜在数据丢失)。每开始一项调节会话时,OtterTune 即可弹出黑名单提示,用以提醒用户添加各项不希望由 OtterTune 进行调节的具体条目。

OtterTune 做出的某些假设可能会对部分用户产生一定的不利影响。举例来说,其假设用户拥有允许控制器对 DBMS 配置进行修改的管理权限。如果用户不具备此权限,则可在其它硬件之上部署一套数据库副本以执行 OtterTune 调节实验——但这亦要求用户重播工作负载追踪流程或立足生产 DBMS 进行查询转发。

机器学习管道

以下示意图介绍了数据如何经由 OtterTune 的机器学习管道实现移动与处理。全部观察结果皆被保留在 OtterTune 的存储库当中。

OtterTune 首先会将观察结果交付至 Workload Characterization 组件当中。此组件负责识别其中一小部分 DBMS 指标,从而更好地把握性能差异以及不同工作负载之间的区别性特征。

接下来,Knob Indetification 组件会生成一份与可调节项目相关之排名清单,其具体排序根据对 DBMS 性能之影响力而定。OtterTune 随后会将全部信息馈送至 Automatic Tuner 当中。此组件负责将目标 DBMS 的工作负载与现有数据存储库内最为相似的工作负载进行映射,而后利用对应工作负载数据以生成更适用的配置方案。

下面让我们深入了解机器学习管道当中所涉及的每一个组件。

Workload Characterization: OtterTune 利用 DBMS 的各内部运行时指标以表征某一工作负载的行为方式。这些指标能够对工作负载作出准确表示,因为其能够确切捕捉到其运行时行为当中的各项细节。然而,亦有许多度量完全不必要存在:其中一部分属于不同单元记录当中的同一量度结果,另一些不必要指标则代表着某些数值存在高度互关联性的 DBMS 独立组件。因此,对其中的冗余度量进行排除将非常重要,这将有效帮助我们降低机器学习模型的复杂性水平。为此,我们将面向 DBMS 对相关模型的度量进行收敛。此后,我们将从每个群集当中选择出一个代表性度量,并确保其为最靠近群集中心的度量。机器学习管道当中的后续组件将对这些度量加以使用。

Knob Identification: DBMS 可以拥有数百项可调节项目,但其中只有一个子集会对 DBMS 性能造成实际影响。OtterTune 利用当前流行趋势 特性选择技术 Lasso 以确保哪个条目会对系统的整体性能造成严重影响。通过此项技术,OtterTune 将能够利用其存储库内的数据对各 DBMS 可调节项目的重要性进行排序。

除此之外,OtterTune 还必须决定在配置建议当中具体包含多少个可调节项目。很明显,包含太多可调节项目将显著增加 OtterTune 的优化时长,但太少则可能导致 OtterTune 找不到最佳配置方案。为了以自动化方式实现此流程,OtterTune 采取了增量式方法。其会逐渐增加调节会话当中所使用的条目数量。此种方法能够确保 OtterTune 在扩展其调节范围之前,首先识别并优化一小部分最为重要的配置调节项目。

Automatic Tuner: Automated Tuning 组件通过在每轮观察周期之后执行两项分析步骤以确定 OtterTune 的推荐配置方案。

首先,该系统利用确定自 Workload Characterization 组件中识别指标的性能数据从原有存储库内找到最能体现目标 DBMS 工作负载特征的原有调节会话。其会将两项会话间的指标进行比较,旨在了解如何对不同调节选项进行变动以实现类似的工作负载指标量化结果。

在此之后,OtterTune 会选择另一套调节配置进行尝试。这套新的配置方案切合当前统计模型所收集到的实际数据,即以此数据为基础从存储库当中查找类似的工作负载。这套模型允许 OtterTune 预测 DBMS 在各类潜在配置下的实际运行效果 OtterTune 会对下一套配置进行优化,从而将探索(即收集集团以改进模型)转化为实际利用(尽可能带来更出色的目标度量)。

具体实现

OtterTune 以 Python 语言编写而成。

对于 Workload Characterization 与 Knob Identification 两种组件,运行时性能并非我们的关注重点,因此我们使用 scikit 以实现相应的机器学习算法。这些算法在后台进程当中运行,并使用来自 OtterTune 存储库的新数据。

对于 Automatic Tuner,这些机器学习算法则变得更为关键。其需要在每一轮观察周期后运行,同时结合新数据以确保 OtterTune 能够选择一项对应调节条目进行下一步尝试。在这一流程中,由于性能成为更加重要的考量因素,因此我们使用 TensorFlow 以实现这些算法。

为了收集与 DBMS 硬件、调节配置以及运行时性能指标相关的数据,我们将 OtterTune 控制器同 OLTP-Bench 基准测试框架进行了整合。

实验性设计

为了完成评估,我们利用 OtterTune 所给出的以下最佳配置选项对 MySQL 及 Postgres 性能进行了比较:

  • Default: DBMS 所提供的配置方案
  • Tuning script: 由一款开源调节建议工具生成的配置方案
  • DBA: 由人类数据库管理员选定的配置方案
  • RDS: 针对 Amazon RDS 管理并部署在同一 EC2 实例类型之上的 DBMS 进行定制化的配置方案

我们在 Amazon EC2 现货实例之上进行了全部实验。我们分别在两套实例之上执行实验过程:其一作为 OtterTune 控制器,其二则作为目标 DBMS 部署系统。我们在这里分别使用了 m4.large 与 m3.xlarge 实例类型。我们将 OtterTune 的调节管理器与数据存储库部署在一套本地服务器之上,其配置为 20 计算核心与 128 GB 内存。

我们还用到了 TPC-C 工作负载,其属于业界标准的在线事务处理(简称 OLTP)系统性能评估工作负载类型。

评估方式

对于我们在实验当中所使用的 MySQL 与 Postgres 两套数据库,我们分别对其延迟水平与数据吞吐量进行了观察。以下图表给出了对应结果。第一份图表所示为第 99 百分位处的延迟水平,意味着“最坏情况”下完成事务处理所需要的时长。第二份图表则显示了数据吞吐量结果,即每秒完成的平均事务数量。

MySQL 测试结果

将 OtterTune 所生成的最佳配置与 Tuning Script 以及 RDS 相关配置进行比较可以发现,MySQL 在延迟水平方面降低了约 60%,而数据吞吐量则在 OtterTune 配置的帮助下提升 22% 到 35% 之间。与此同时,OtterTune 的生成的配置方案在实际效果上与人类数据库管理员几乎不相上下。

一部分特定 MySQL 调节项目对其 TPC-C 工作负载性能表现产生了显著影响。OtterTune 与数据库管理员提供的配置方案可为每一调节选项带来良好的设置效果。RDS 的执行水平稍差一点,在设置效果上略逊一筹。而 Tuning Script 的配置效果最差——因为其只对其中一个调节选项作出了变更。

Postgres 测试结果

在延迟方面,OtterTune、调节工具、数据库管理员以及 RDS 所给出的配置建议全部优于 Postgres 的默认设置,且提升效果基本类似。我们可以将这一结果归结于 OLTP-Bench 客户端与 DBMS 之间的往返路由造成了巨大的性能影响。在数据吞吐量方面,Postgres 在使用 OtterTune 建议配置时,实际效果较数据库管理员及 Tuning Script 配置选项大约提升 12%,而与 RDS 间的比较优势更是达到 32%。

与 MySQL 类似,只有少数几个调节选项会对 Postgres 性能产生显著影响。OtterTune、数据库管理员、Tuning Script 以及 RDS 所生成的配置都对这些条目进行了修改,且其中多数能够带来相当不错的设置效果。

总结意见

OtterTune 能够以自动化方式为 DBMS 各配置选项找到良好的设置方式。为了对新的 DBMS 部署系统进行调整,OtterTune 会使用以往调优会话当中收集到的训练数据。由于 OtterTune 并不需要在每次生成操作当中再次利用初始数据集进行机器学习模型训练,因此整个调节时间周期得到大幅缩减。

未来的发展目标是什么?为了进一步适应日益普及的 DBaaS 部署场景(此类场景下,将无法以远程方式访问 DBMS 主机设备),OtterTune 将很快能够自动检测目标 DBMS 的硬件功能,且无需进行任何远程访问。

欲了解更多与 OtterTune 项目相关的细节信息,请点击此处参阅我们的论文(英文原文)或者 GitHub 上的代码。亦欢迎大家关注我们的网站,我们将尽快通过本网站以在线调优服务的形式将 OtterTune 交付到您的手中。

2017-06-07 19:002447

评论

发布
暂无评论
发现更多内容

java线程池使用指南

巧手打字通

Java 性能优化 线程池

绿色成就+1!天翼云在“新绿杯”斩获佳绩!

天翼云开发者社区

云计算 存储 天翼云

.NET常见的几种项目架构模式,你知道几种?

EquatorCoco

架构 .NET 7

“创新驱动·融合发展”长三角软件产业盛会“2024南京软博会”

AIOTE智博会

软件展会 软博会 南京软博会

京东商品属性的详细api数据解析:颜色、尺寸与材质

技术冰糖葫芦

API Gateway API 接口 API 测试 pinduoduo API

RAG+Agent人工智能平台:RAGflow实现GraphRA知识库问答,打造极致多模态问答与AI编排流体验

汀丶人工智能

智能问答 rag RAGflow

Zilliz Cloud 最新功能速览:迁移服务、Fivetran Connector、多副本 Replica

Zilliz

AI 向量数据库 zilliz cloud

大模型训练平台标准第三次研讨会即将召开

中国信通院AI Infra工作组

链游开发:TON链小游戏与其他链DApp小游戏开发指南

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

解密Elasticsearch:深入探究这款搜索和分析引擎

京东科技开发者

华为发布智算数据中心基础设施十大建设原则

Geek_2d6073

百度网盘企业版数据快速上云,数据流转平台 CloudFlow 加速大模型训练迭代

Baidu AICLOUD

数据迁移 百度网盘 数据流转

华为全联接大会2024︱鲲鹏计算产业峰会成功举办

Geek_2d6073

eggtart队比赛攻略

阿里云天池

第二届Apache Flink极客挑战赛冠军比赛攻略_SkyPeaceLL队

阿里云天池

望繁信科技受邀出席ACS2023,为汽车行业数智化护航添翼

望繁信科技

数字化转型 流程挖掘 流程资产 流程智能 数字北极星

VLDB来啦!企业上云“搭子”天翼云TeleDB数据库有话说

天翼云开发者社区

数据库 云计算 天翼云

掌握IT资产发现的三个步骤

ServiceDesk_Plus

IT资产 IT资产安全 IT资产管理

还在自己实现责任链?我建议你造轮子之前先看看这个开源项目

京东科技开发者

【Tomcat源码分析】从零开始理解 HTTP 请求处理 (第一篇)

派大星

tomcat源码解读

云栖大会Day1:云应用开发平台 CAP 来了

阿里巴巴云原生

阿里云 云原生 云栖大会

参赛故事|背水一战的机会,金蝶云苍穹助我圆保研梦

金蝶云·苍穹

开发者大赛 金蝶 金蝶云苍穹 中国软件杯

《2024网络安全十大创新方向》发布,云起无垠引领新风向

云起无垠

Gradio离线部署到内网,资源加载失败问题(Gradio离线部署问题解决方法)

明金同学

行业革新,数据先行:智源研究院数据与行业应用 Workshop第三期

智源研究院

AI助力低代码平台:从智能化到高效交付的全新变革

天津汇柏科技有限公司

低代码 AI 人工智能

TiDB 和 Flink 数据集成实战

TiDB 社区干货传送门

万界星空科技商业开源MES系统全面解析

万界星空科技

开源 mes 开源mes 万界星空科技 mes源码

在k8s上部署tidb数据库

TiDB 社区干货传送门

云南大理等级保护测评机构在哪里?电话多少?

行云管家

等保 云南

“模”力十足!天翼云息壤一体化智算服务平台训推服务能力重磅升级!

天翼云开发者社区

云计算 大模型 天翼云

亚马逊推出机器学习工具给数据库调优,DBA要失业了?_数据库_核子可乐_InfoQ精选文章