「如何实现流动式软件发布」线上课堂开课啦,快来报名参与课堂抽奖吧~ 了解详情
写点什么

腾讯联合华科推出基于深度强化学习的云数据库自动调优系统,效果优于数据库专家

2019 年 6 月 18 日

腾讯联合华科推出基于深度强化学习的云数据库自动调优系统,效果优于数据库专家

腾讯与华中科技大学合作提出了一种基于深度强化学习的端到端的云数据库自动性能优化系统 CDBTune,此项研究是基于 AI 技术的数据库性能调优结果首次全面超越数据库专家经验判断的传统方法。相关论文已经被国际数据库顶级会议 SIGMOD 收录。


随着云计算的迅速发展,越来越多中小型企业购买云数据库服务系统来代替自建数据库。然而,大多数用户在购买云数据库服务系统后仅仅停留在使用层面上,使用过程中经常遇到数据库系统性能下降的问题,由于缺少数据库管理系统性能优化的经验,用户很难发现导致数据库系统性能下降的原因并有效地解决,这就需要云服务提供商为用户及时地调整数据库系统参数,以保证数据库的性能维持在一个较优的状态。对于拥有数十万计用户实例的云服务提供商来说,完全依赖数据库专家进行数据库参数调优并不现实,如何利用 AI 技术解决数据库系统性能问题变得越来越重要和紧迫。


近日,腾讯与华中科技大学合作发布了最新研究论文《An End-to-End Automatic Cloud Database Tuning System Using Deep Reinforcement Learning》,该论文首次提出了一种基于深度强化学习的端到端的云数据库自动性能优化系统 CDBTune,该系统可以在缺少相关经验数据训练的情况下建立优化模型,为云数据库用户提供在线自动优化数据库性能的服务,性能调优结果首次全面超越数据库专家,将大幅提高数据库运维效率。该论文已经被国际数据库顶级会议 SIGMOD 收录,将于 6 月 30 日在荷兰阿姆斯特丹召开的 SIGMOD 2019 国际会议上公开发表。该成果由华中科技大学武汉光电国家研究中心周可教授团队和腾讯技术工程事业群云架构平台部 CDB 数据库团队合作完成,博士生张霁为第一作者。


对于该论文,SIGMOD 评审委员会给出了极高的评价:


The paper is on the exciting new area of tuning databases with machine learning. Specifically using reinforcement learning. It does not just throw machine learning techniques but it does a good effort to explain how the techniques exactly match to the particular problem, what are the analogies with more traditional machine learning terminology, etc. Given that not everyone is knowledgeable in these techniques in the DB community this works in an educational way as well and is very much appreciated.

(本文是关于利用机器学习方法优化数据库的技术,这是一个令人振奋的新领域。 特别是它使用了强化学习的方法。这篇文章不仅仅是简单地抛出一个机器学习技术,而且非常好地解释了机器学习是如何与特定的问题进行完全的匹配,同时也阐述了与传统机器学习术语之间的类比问题。鉴于在数据库社区中并非每个人都能对这些技术了如指掌,这也是一种教学方式,因此我们非常赞赏这篇文章。)


AI 前线第一时间联系到腾讯 TEG 云架构平台部 CDB 数据库团队进行了独家专访,内容整理如下:


CDBTune 因何而生?

随着自研业务以及腾讯云上数据库实例规模不断高速增长,团队发现对于很多腾讯数据库 CDB 的使用者来说,由于缺少丰富的数据库性能优化经验,很难发现导致数据库性能下降的原因并有效解决。而对于 CDB 团队来说,完全依赖数据库专家进行数据库参数调优代价昂贵且不现实。


在 CDBTune 之前,业界对于数据库性能自动调优也有一些类似工作。大概有两个方向:


  • 第一个方向主要利用启发式搜索的方法缩小高维配置空间。这种方法不利用任何历史经验数据,因此在每个调参任务开始时都需要从 0 开始,调参效率较低。

  • 另外一个方向是采用流水线方式的传统机器学习方法,导致推荐配置有一定的误差。而且需要大量高质量的经验数据进行模型训练,提高了学习门槛。


CDBTune 主要的目标就是解决两个问题:降低学习门槛和提升调参效率。


CDBTune 工作原理

CDBTune 的工作过程主要分为离线训练和在线调优两个步骤。离线训练就是用一些标准的负载生成器对数据库进行压测,边收集训练数据,边训练一个初步的配置推荐模型。当用户或者系统管理员有数据库性能优化需求时,可以通过相应的交互接口提出在线调参优化请求,此时云端的控制器通过给智能优化系统发出在线调参请求,并根据用户真实负载对之前建立好的初步模型进行微调,然后将模型微调后推荐出的相应的参数配置在数据库中进行设置。反复执行上述过程,直到待调参的数据库性能满足用户或系统管理员的需求即停止调参。


CDBTune系统交互图


CDBTune 系统交互图


对于为什么要在系统中采用强化学习,CDB 数据库团队表示,强化学习可以边生成数据边训练模型,而且强化学习既可以在成功中学习,也可以在失败中学习,因此它对前期训练样本的质量要求不会非常高,降低了学习建模的门槛。在 CDBTune 系统中,强化学习主要通过激励信号(数据库性能的变化)优化配置推荐网络,使得推荐出来的配置参数更为合理。


强化学习与数据库性能优化关系图


强化学习与数据库性能优化关系图


CDBTune 性能表现

CDB 团队主要采用并发和延时两个指标来衡量数据库的性能。论文从整体性能比较(推荐时间、推荐结果),不同可调参数个数的影响比较,在弹性云环境下(用户内存和磁盘空间变化)CDBTune 的适应能力等三大方面对 CDBTune 进行考量。


推荐耗时比较

为了了解不同步骤在训练和调优过程中所需要的耗时,团队记录了每个步骤的平均运行时间。每个步骤的运行时间为 5 分钟,主要又细分为 5 个部分(不包括重启 CDB 的 2 分钟),如下所示:


(1)压力测试时间(152.88 秒):工作负载的运行时间 用于收集数据库当前度量的工作负载生成器的运行时间。


(2)度量收集时间(0.86 ms):从内部度量获取状态向量并通过外部指标计算奖励的运行时间。


(3)模型更新时间(28.76 ms):在一次训练过程中神经网络前向计算和反向传播的运行时间。。


(4)推荐时间(2.16 ms):从输入数据库状态到输出推荐配置的运行时间。


(5)部署时间(16.68 秒):从输出推荐配置到根据 CDB 的 API 接口部署配置的运行时间。


对于离线训练,CDBTune 在 266 种推荐配置上训练完成需要大约 4.7 小时,在 65 种推荐配置上训练需要 2.3 小时。请注意,配置数会影响离线训练时间,但不会影响在线调优的时间。对于在线调优,每个调优请求分 5 步执行 CDBTune,总的耗时为 25 分钟。


另外,团队将 CDBTune 的在线调优效率与 OtterTune、BestConfig 和 DBA 进行对比,结果如下表所示。



其中,只有 CDBTune 需要离线训练,但它只需要进行一次训练就可以使用该模型进行在线调优,而 OtterTune 在每一次收到在线调优请求的时候都需要重新训练模型,BestConfig 则需要进行在线搜索。如下表所示,对于每个调优请求,OtterTune 需要 55 分钟,BestConfig 需要大约 250 分钟,DBA 需要 8.6 小时,而 CDBTune 只需要 25 分钟。在对比实验中,研发团队邀请了 3 位 DBA 来调整参数并选择其中的最佳结果。 DBA 需要大约 2 个小时才能开始执行工作负载重放并找到影响数据库性能的因素(例如,分析源代码中最耗时的函数,然后定位原因,并找到相对应可以调整的配置),这个过程通常需要丰富的经验和大量的时间。


推荐性能比较

如下图所示,CDB 团队在多种不同负载和不同类型的数据库下进行的大量实验证明,CDBTune 性能优化结果明显优于目前已有数据库调优工具和 DBA 专家。即使在弹性云环境下,用户购买数据库内存或磁盘大小发生变化,或负载发生变化(类型不变)的情况下,实验证明 CDBTune 依然保持了较好的适应能力。更多对比结果和数据在论文中有详细说明。


CDBTune性能测试结果1:性能比较


CDBTune 性能测试结果 1:性能比较


CDBTune性能测试结果2:内存/磁盘容量变化对模型的影响


CDBTune 性能测试结果 2:内存/磁盘容量变化对模型的影响


据了解,CDBTune 不仅仅适用于云数据库,对于本地数据库同样也表现出了优异的性能,实验结果可以查阅论文的附录部分。


下一步计划

目前 CDBTune 在在线推荐配置时还需要花大约 25 分钟左右的时间,CDB 团队希望进一步压缩该时间,降低用户等待时间,从而提高用户体验。另外,目前团队正在进行 CDBTune 的产品化工作,相信过不了多久大家就可以在腾讯云上体验这项研究成果,研究团队也将继续寻求技术突破,以期在数据库调参领域取得更多成果。


论文原文:


http://dbgroup.cs.tsinghua.edu.cn/ligl/papers/sigmod19-cdbtune.pdf


2019 年 6 月 18 日 07:0010061
用户头像
蔡芳芳 InfoQ高级编辑

发布了 604 篇内容, 共 293.9 次阅读, 收获喜欢 1923 次。

关注

评论 3 条评论

发布
用户头像
不知道这个和张小龙出身于华科有没有关系,哈哈
2019 年 06 月 19 日 12:09
回复
用户头像
CMU在2017年推出了self-driving的数据库peleton,但现在该项目已经被关闭,研究团队另外开启了一个类似的项目,但目前看来进展甚微。AI用于数据库自动调优是否真的可行呢?
2019 年 06 月 18 日 10:43
回复
用户头像
如果你有更多AI在数据库领域的研究或落地案例,欢迎交流~
2019 年 06 月 18 日 10:41
回复
没有更多了
  • Snowflake: 云端的弹性数据仓库

    Snowflake是一个构建在云端的弹性数据仓库,也是这个产品背后公司的名字。它的创始人和管理层都有强大的背景。

    2018 年 5 月 14 日

  • Splunk ITSI:自适应阈值和异常检测

    理论上,由运维团队来决定预警和警报的阈值。但实际上,运维团队通常对这些值也没有什么概念。Splunk ITSI使用自适应阈值之类的机器学习技术解决了此类问题。

  • 如何快速的插入 100W 数据到数据库,使用 PreparedStatement 最快实现!

    有时候,我们使用数据库的时候,如何快速的添加测试数据到数据库中,做测试呢,添加100W 数据,如果使用工具的话可能很慢,这里我推荐大家使用 PreparedStatement 预编译

    2021 年 3 月 10 日

  • 腾讯云数据库智能化海量运维的建设与实践

    腾讯云数据库海量运维的经验,主要分为以下三部分:由于数据库产品的特殊性和复杂性,我们在平时服务客户的过程中常遇到一些问题,例如:分布在各行各业的客户,他们会有不同的场景需求,这对于数据库的应用来说存在有非常大的差别。

  • 架构师训练营第 9 周学习总结

    数据库架构原理

    2020 年 12 月 20 日

  • 电商网站的宕机案例分析

    性能调优社区dynatrace在其博客中分享了客户案例,电商网站在假日客流峰值期间数次崩溃,经过SQL优化和调整负载均衡算法解决了相关问题,值得读者借鉴。

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

    数据库管理系统(简称 DBMS)无疑是任何数据密集型应用程序当中最为重要的组成部分,其肩负着处理大量数据以及高复杂性工作负载的重任。然而,数据库管理系统本身却往往难于管理,因为其中通常包含数百种配置“旋钮”,用于控制诸如缓存内存分配量以及存储介质数据写入频率等要素。各类企业一般需要聘请专业人士以协助相关调配工作,但对于大多数企业而言,此类专业人才的开价亦相当高昂。 面对这一难题,卡耐基 - 梅隆大学数据库小组(Carnegie Mellon Database Group)的学生及研究人员们共同开发出一款名为 OtterTune 的新型工具,其能够以自动化方式识别出最适当当前数据库管理系统配置需求的设置组合。其目标在于有效简化用户对 DBMS 的部署流程,确保那些在数据库管理层面不具备任何专业知识的朋友亦能轻松完成任务。

  • DB-Engines 2 月数据库排名:三霸主集体“亮红灯”?小众数据库不可小觑

    DB-Engines最近发布了2021年2月份的数据库排名。该网站根据数据库管理系统的受欢迎程度对其进行排名,实时统计了364种数据库的排名指数。前10名的排行情况详见下图:

    2021 年 2 月 23 日

  • 华为中国生态大会 2021 举行在即,GaussDB 将重磅发布 5 大解决方案

    ​​摘要:企业数字化转型如火如荼,云成为数字化与新基建的关键要素,数据成为智能时代新的生产资料和企业数字化的生命,而数据库则是支撑数据生命线的底座。

    2021 年 5 月 13 日

  • 数据库管理工作如何适应 DevOps 实践

    在DevOps布鲁塞尔峰会上,Dan North将在演讲中探讨数据库管理员如何适应DevOps这一全新的环境。InfoQ与North进行了一次采访,内容包括数据库管理员的日常工作,以及这些工作与开发者和运维人员的工作之间的关联;数据库管理工作是怎样组织的;数据库如何适应DevOps或持续交付实践;以及North对于实施了DevOps的组织数据库管理工作未来的变化有怎样的期待。

  • 33|技术权衡:解决方案这么多,哪个最合适?

    这节课,我会借助三个技术权衡案例,来带你深入理解工程师的职责。

    2020 年 12 月 30 日

  • 如何成功应聘大数据开发工程师?

    讲师介绍: 蒋鸿翔,网易数据库和大数据资深架构师。他长期从事数据库内核技术和大数据平台底层技术开发,先后主导了内部MySQL分支InnoSQL、HBase、自研时序数据库、实时数据仓库、离线计算等各种不同的平台,擅长数据库内核技术诊断、复杂环境数据恢复,大数据平台各种性能优化技术等等。 问题背景: 在面试大数据岗位时,不知你是否会遇到这样的问题:为什么同样的岗位对人才的要求却有很大的不同?为什么投了许多家公司却很少受到面试邀请?为什么好不容易通过简历筛选,却又在面试上频频败下阵来? 同样的,我作为大数据岗的面试官的这一年时间里,也有类似感触:虽然接收的简历数量不在少数,但能通过筛选进入面谈的却并不多,即使进入了面谈,能满足要求的人更是凤毛麟角,手握HC(Head Count)一大把,却无人可用。 那么,要想成功通过大数据相关岗位的面试,究竟需要具备什么样的能力呢? 内容看点: 什么是“大数据开发工程师”? 面试不同的大数据岗位,有哪些技能要求?

    2021 年 7 月 9 日

  • Amazon Aurora PostgreSQL Serverless 现已正式推出

    数据库通常是软件架构中最关键的部分,而管理数据库,尤其是关系数据库,从来就不是一件轻松的事。

  • 通过机器学习自动优化 DBMS

    数据库管理系统 (DBMS) 是所有数据密集型应用程序最重要的组成部分。

  • 微众银行核心数据库架构演进

    2019 年 7 月 26 日

  • 一杯茶的功夫就把日志搜索引擎性能调优了?!

    Beaver 拥有大量与性能相关的配置项,由于手动配置费时费力,并且有时需要修改相关配置以适配特定环境,所以自动调整配置参数优化性能是当前迫切需要解决的问题。

  • DB-Engines 4 月数据库排名:Redis 有望甩掉“千年老七”?

    DB-Engines最近发布了2021年4月份的数据库排名。该网站根据数据库管理系统的受欢迎程度对其进行排名,实时统计了370种数据库的排名指数。前20名的排行情况详见下图:

    2021 年 4 月 21 日

  • TiDB:一个国产新数据库的创业故事

    TiDB是位于北京的一家创业公司PingCAP的产品,它的目标是实现一个开源的类似谷歌Spanner一样的系统。

    2018 年 5 月 16 日

  • 为什么 MapReduce 会被硅谷一线公司淘汰?

    自2014年左右开始,Google内部已经几乎没人写新的MapReduce了,你知道这是为什么吗?

    2019 年 4 月 17 日

发现更多内容

618 技术特辑(二)几百万人同时下单的秒杀,为什么越来越容易抢到了

华为云开发者社区

数据库 服务器 流量 618 弹性负载均衡

项目经理如何有效管理需求变更?

万事ONES

需求管理 ONES 项目经理

Java8 的时间库(1):介绍 Java8 中的时间类及常用 API

看山

Java 6 月日更

【Flutter 专题】103 初识 Flutter Mixin

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 6 月日更

一分钟开发一个表单

Daniel

vue.js 表单 动态表单 6月日更 6 月日更

请阐述vue的diff算法

法医

Vue 前端 6 月日更

Linux之ls命令

入门小站

Linux

react源码解析13.hooks源码

全栈潇晨

React

Python——字典的使用

在即

6月日更 六月日更

用EasyRecovery“监控硬盘”功能检测硬盘问题的方法

淋雨

数据恢复 EasyRecovery 文件恢复

【LeetCode】石子游戏Java题解

HQ数字卡

算法 LeetCode 6月日更

连续七年,我们持续领跑

浪潮云

Python训练营笔记 数据结构大汇总 Day6

万里无云万里天

Python 6月日更

PO 就是Scrum中的产品经理?别再搞不清啦

万事ONES

项目管理 Scrum 敏捷开发 PO ONES

JAVA笔记(三)--变量及运算符

加百利

Java 程序员 后端 6月日更

论现代科技发展趋势:停滞、减速 OR 蓄力?

老猿Python

发展 科技 软件技术

密码学系列之:feistel cipher

程序那些事

加密解密 密码学 程序那些事

缓存的世界 Redis(二)-持久化

卢卡多多

redis redis持久化 配置文件持久化 六月日更

Java包装类(Integer 详解 )

若尘

java编程 六月日更

并发王者课-铂金1:探本溯源-为何说Lock接口是Java中锁的基础

技术八点半

Java 多线程 并发 并发王者

快来,这里有23种设计模式的Go语言实现

华为云开发者社区

go 线程 设计模式 单例模式 go语言

VS code常用插件推荐(总结整理篇)

孙叫兽

前端 vscode 插件 Vue 3

架构实战营模块六总结

竹林七贤

【Vue2.x 源码学习】第十五篇 - 生成 ast 语法树 - 构造树形结构

Brave

源码 vue2 6 月日更

我在阿里做架构 | 单测最佳实践

九叔

最佳实践 测试 单元测试

OpenVINO+微软黑客松比赛项目简介

IT蜗壳-Tango

IT蜗壳 6 月日更

故事|订单系统中的补偿事务

悟空聊架构

故事 事务 6 月日更 订单系统 补偿事务

软件工程,其实没有任何工程而言

实力程序员

618 技术特辑(一)不知不觉超预算3倍,你为何买买买停不下来?

华为云开发者社区

电商 图数据库 知识图谱 618 图引擎服务

译文 | AI产品经理:如何打造一款SaaS+AI的优质产品

LigaAI

产品经理 研发管理

【21-8】PowerShell 输入输出

耳东

PowerShell 6月日更

腾讯联合华科推出基于深度强化学习的云数据库自动调优系统,效果优于数据库专家-InfoQ