前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >腾讯云数据库亮相数据库顶级会议SIGMOD

腾讯云数据库亮相数据库顶级会议SIGMOD

原创
作者头像
腾讯云数据库 TencentDB
修改于 2019-08-14 11:15:48
修改于 2019-08-14 11:15:48
1.2K0
举报

| 导语ACM SIGMOD/PODS 2019 数据管理国际会议于6月30日到7月5日在荷兰首都阿姆斯特丹召开。腾讯技术团队直击现场第一时间带回大会盛况。

SIGMOD第一天大会Keynote主题为“Responsible Data Science”;第二天的Keynote主题是区块链,更偏应用一些,由IBM Almaden研究中心的著名数据库研究员C. Mohan报告。他自从2016年以来重点研究和推广区块链技术,据统计已经在全世界十几个国家做过相关的报告。区块链技术经过了十年的发展,至今还存在一些争议。本次报告主要集中在私有区块链系统的相关技术,也比较了传统数据库与区块链技术并指出了未来的研究方向。

SIGMOD Keynote: State of Public and Private Blockchains: Myths and Reality

在第二天SIGMOD大会中,华中科技大学与腾讯TEG云架构平台部CDB数据库团队合作的学术论文“An End-to-End Automatic Cloud Database Tuning System Using Deep Reinforcement Learning”(以下简称CDBTune论文)作为“分布式数据管理”主题的第一篇论文出现。

参数调优是云数据库性能优化的重要方法。由于数据库参数较多,关系复杂,人工调优有着效率低和成本高的问题。同时,现有的一些研究使用的方法有一些限制,包括:

1. 使用pipeline的机器学习方法而不是端到端的方式

2. 需要大量的高质量样本来进行参数调优

3. 无法调优高维并连续的参数

4. 不具有较好的适应性应对云上的环境等

因此论文提出了一种端到端的自动参数调优系统CDBTune,来应对这些挑战。CDBTune使用深度强化学习方法(DDPG)在高维连续空间中寻找更优配置。整体架构如图所示:

CDBTune使用try-and-error的策略,使用少量样本初始化训练,使用reward-feedback机制来代替传统的回归方法,进行端到端学习并加快收敛速度。

从实验结果来看,CDBTune具有较好的性能调优结果,并且有较好的泛化能力。

论文题目:An End-to-End Automatic Cloud Database Tuning System Using Deep Reinforcement Learning

论文原文链接:https://dl.acm.org/citation.cfm?doid=3299869.3300085近日,腾讯与华中科技大学合作发布了最新研究论文 《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 系统交互图

对于为什么要在系统中采用强化学习,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 性能测试结果 2:内存 / 磁盘容量变化对模型的影响

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

下一步计划

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
自动化-Appium-微信小程序(Python版)
微信小程序其实也是正常的webview,但需要在微信里打开X5调试页面进行设置,脚本添加androidProcess参数才可以执行自动化测试。
wangmcn
2022/07/25
5.9K0
自动化-Appium-微信小程序(Python版)
聊聊 Python 做微信小程序自动化,那些踩过的坑?
之前写过 微信小程序的几种方式,对于有源码的小程序推荐使用微信开放的 SDK 来做自动化,否则只能使用原生或 WebView 的方式。
AirPython
2020/05/18
2.5K0
自动化-Appium-微信小程序(Java版)
微信小程序其实也是正常的webview,但需要在微信里打开X5调试页面进行设置,脚本添加androidProcess参数才可以执行自动化测试。
wangmcn
2022/07/25
2.8K0
自动化-Appium-微信小程序(Java版)
Android开发高级进阶——多进程间通信
当一个应用在开始运行时,系统会为它创建一个进程,一个应用默认只有一个进程,这个进程(主进程)的名称就是应用的包名。
trampcr
2018/09/28
1.1K0
Android开发高级进阶——多进程间通信
一篇文章带你入门移动安全
这篇文章集合了一些入门移动安全的基础渗透知识,希望可以能给想入门移动安全小伙伴们一些收获。
重生信息安全
2020/07/28
1.6K0
一篇文章带你入门移动安全
appium+python自动化56-微信小程序自动化
最近微信的小程序越来越多了,随之带来的问题是:小程序如何做自动化测试? 本篇以摩拜小程序为例,介绍如何定位小程序里面的元素
上海-悠悠
2018/07/25
1.7K0
appium+python自动化56-微信小程序自动化
Appium之测试微信小程序
如果用手机自带的浏览器去访问各种网页。自然而然都能获取到 WebView 的,不需要开启什么。用原生的、手机自带的浏览器去试下,也能得到对应的结果。
清菡
2020/12/16
3K0
Appium之测试微信小程序
使用Xposed进行微信小程序API的hook
  上一篇文章讲了安卓的虚拟定位相关的内容,最后编写了一个frida脚本来对Framework层的API进行hook实现虚拟定位。但是有几点局限性:
大A
2023/02/14
7.2K0
一种 Android 端 Web 多进程情况下支持 Web 自动化测试的方法
本文介绍了应用宝在Android平台支持Web自动化测试的方案,主要从架构设计、实现细节、流程梳理、支持Web自动化测试方案、Web多进程后的支持方案、Web自动化测试方案的插件化设计等方面进行了详细阐述。方案采用的主要技术包括Java、Android、JavaScript、Appium、Selenium、XWalk等,并介绍了如何通过插件化的方式实现Web自动化测试,以支持多进程、提高测试效率、保证测试准确性和稳定性,同时也为其他平台的Web自动化测试提供了参考和借鉴。
腾讯移动品质中心TMQ
2017/07/12
2.2K0
一种 Android 端 Web 多进程情况下支持 Web 自动化测试的方法
微信小程序之自动化亲密接触
导读 山雨欲来风满楼,最近微信小程序相关开发文章吹遍大江南北,亦有摧枯拉朽万象更新之势。问小程序形为何物,直教IT众生怡情悦性高潮迭起。作为一名有着远大理想“包袱”与互联网变革 “使命感”的测试工程师,我再也按耐不住内心中的渴望与好奇,代表测试行业各大门派肩负起了迎接时代变革的挑战。话说经历了围观查看、溜边打探等种种过程,终于在隔壁老王那里弄到了测试体验资格,开始了一场对小程序的自动化亲密接触。 上篇---小程序初探 上手的小程序是微信官方的测试Demo,类似Android Api Demos一样,官方小程
腾讯移动品质中心TMQ
2018/02/08
2.7K0
微信小程序之自动化亲密接触
微信小程序自动化测试最佳实践(附 Python 源码)
随着微信小程序的功能和生态日益完善,很多公司的产品业务形态逐渐从 App 延升到微信小程序、微信公众号等。小程序项目页面越来越多,业务逻辑也越来越复杂,全手工测试已无法满足快速增长的业务需求。
霍格沃兹测试开发
2020/08/18
1.3K0
微信小程序自动化测试最佳实践(附 Python 源码)
自动化测试微信小程序
Mac 环境下搭建 appium 1 安装homebrew 首先命令行检查是否安装:
赵云龙龙
2019/09/25
2.8K0
自动化测试微信小程序
Appium如何开展小程序自动化测试?
现阶段,小程序越发的火,微信也给了巨量的流量诱惑。很多公司都有进行小程序开发。 那么小程序可以进行自动化测试吗? 当然是可以的!
测试开发技术
2021/11/04
2.2K0
Android多进程总结1
正常情况下,一个apk启动后只会运行在一个进程中,其进程名为apk的包名,所有的组件都会在这个进程中运行,以下为DDMS的进程截屏:
随心助手
2019/10/14
1.5K0
Android十八章:多进程基础
这一章主要讲述多进程的作用,序列化和反序列化,Serializable和Parcelable
ppjun
2018/09/05
4750
小程序逆向分析 (一)
小程序是一个以 wxapkg 为后缀的文件,在android手机的 /data/data/com.tencent.mm/MicroMsg/用户id/appbrand/pkg/ 里面找, 例如在我的测试手机里面就在
奋飞安全
2021/09/08
2.3K0
Android技能树 — 多进程相关小结
这次是讲Android存储路径及IO的基本操作。因为我们在开发的时候会经常这种方便的需求。这篇文章的内容我写的可能很少,都没有细写。别吐槽。o( ̄︶ ̄)o
青蛙要fly
2018/08/29
4590
Android技能树 — 多进程相关小结
Android中多进程通信有几种方式?需要注意哪些问题?
在Android中,多进程通信(Inter-Process Communication,IPC)是指不同进程之间进行数据交换和协同工作的过程。由于Android的每个应用都在其自己的沙箱环境中运行,进程间默认是隔离的,因此当需要在不同应用或同一应用的不同组件之间共享数据时,就需要使用IPC机制。
AntDream
2024/09/19
4320
Android中多进程通信有几种方式?需要注意哪些问题?
adb 命令大全_整理磁盘碎片的命令
大家好,又见面了,我是你们的朋友全栈君。 adb是什么?:adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方面通过DDMS来
全栈程序员站长
2022/08/03
2.8K0
关于 Android 应用多进程的整理
在计算机操作系统中,进程是进行资源分配和调度的基本单位。这对于基于Linux内核的Android系统也不例外。在Android的设计中,一个应用默认有一个(主)进程。但是我们通过配置可以实现一个应用对应多个进程。
技术小黑屋
2018/09/05
1K0
相关推荐
自动化-Appium-微信小程序(Python版)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档