DTCC 2020 | 阿里云梁高中:DAS之基于Workload的全局自动优化实践

简介: 第十一届中国数据库技术大会(DTCC2020),在北京隆重召开。在12.23日性能优化与SQL审计专场上,邀请了阿里巴巴数据库技术团队高级技术专家梁高中为大家介绍DAS之基于Workload的全局自动优化实践。 SQL自动优化是阿里云数据库自治服务重要自治场景之一,该服务支撑阿里巴巴集团全网慢SQL的自动优化,目前已累计自动优化超4900万慢SQL。阿里在构建这一能力过程中有经验也有教训,期望从基于Workload的全局优化能力构建历程、智能化自动优化闭环实践两个方面和大家分享。

SQL自动优化是阿里云数据库自治服务重要自治场景之一,该服务支撑阿里巴巴集团全网慢SQL的自动优化,目前已累计自动优化超4900万慢SQL。阿里在构建这一能力过程中有经验也有教训,期望从基于Workload的全局优化能力构建历程、智能化自动优化闭环实践两个方面和大家分享。
HU8B9497.JPG

演讲嘉宾简介:

梁高中,阿里巴巴数据库技术团队高级技术专家,2017年加入阿里巴巴集团,目前负责阿里巴巴阿里云数据库自治服务研发负责人。加入阿里巴巴前,曾就职于IBM,华为等,拥有12+年的数据库产品、数据库优化经验,曾担任数据库优化专家系统,跨源跨数据中心联邦数据库等开发团队负责人。

以下内容根据演讲视频以及PPT整理而成。

本次分享主要围绕以下三个方面:
一、SQL优化场景
二、核心诊断能力构建
三、自动优化闭环

一、SQL优化场景

1. SQL优化挑战

数据库诊断优化是提高数据库性能和稳定性的关键技术之一, SQL优化是其中至关重要的一环。目前约80%的数据库性能问题可通过SQL优化手段解决。SQL优化目前还是面临着很多挑战,首先,SQL优化需要基于多方面的数据库领域专家知识和经验。而且SQL优化耗时繁重,当面临如阿里这样的大规模的业务场景时,SQL持续优化充满挑战。下图中有一个基于真实业务数据所画出的,随时间变化的数据库慢SQL趋势图
,T1代表着发现数据库实例因慢SQL造成性能异常的时间点,而T2表示优化过程结束,恢复常态时间点。那么T1越短表示发现性能异常的耗费时间越少。其次T2-T1时间是异常处理时长,如果处理时间过长,一方面会严重影响业务,另一方面大大增加故障风险。
1.png

2. SQL优化三大场景

如果将SQL优化功能提供给用户,主要涉及三种场景。首先是单SQL工具辅助诊断。用户可以选择以单SQL为输入,辅助诊断工具会根据给定SQL及相关环境信息,给出优化建议(改写、最优索引建议等),最大化加速查询。还有基于负载全局辅助诊断工具,主要以Workload负载为优化单位,综合考虑Workload中影响整体性能的特征,实现负载整体性能最大化提升同时最大化降低空间消耗。这两个场景以辅助决策方式,为用户提供SQL诊断和优化。还有一种场景是自动SQL优化,通过构建完善的自动化流程,实现问题SQL识别、优化建议生成、评估自动上线,后续跟踪、收益计算的全自动化流程。

二、核心诊断能力构建

支持SQL优化,就需要对核心诊断能力进行构建。那什么是核心诊断能力?即针对问题SQL,给出非常准确的建议。用户通常会遇到下面几种SQL优化问题。

1. 单SQL优化诊断

SQL优化的本质是创造条件,发现可以提升的点,如SQL改写,创建SQL索引等,从而让数据库优化器选择最优或者次优的SQL执行计划。下图中间核心位置的是SQL优化引擎,两边是从核心能力衍生出的对外场景,左边是对外提供的SQL自动优化的闭环,右边是为用户提供的SQL优化建议。那么单SQL优化诊断能力的构建面临几个主要的问题,首先是应该采用哪种优化推荐算法?是基于规则方式还是基于代价模型方式?针对WHAT-IF内核能力缺失的数据库,应该如何选择?第二点,足够覆盖度的测试集,既如何构建一个庞大的测试案例库用于其核心能力验证?拥有足够覆盖度,因为准确的测试案例库往往是核心诊断能力构建过程中至关重要的一环。第三点,如何在大规模业务场景下提供诊断服务能力,阿里需要服务于云上几十万级的数据库实例的SQL优化诊断,那么如何实现复杂的计算服务服务化拆分,计算服务的横向伸缩,最大化的并行,资源访问分布式环境下的并发控制,不同优先级的有效调度消除隔离,峰值缓冲等等?第四点,如何让SQL诊断能力持续改进。
2.png

单SQL优化诊断 —— 优化推荐算法选择·面临挑战

第一类推荐算法是基于规则式的,其明显的特点是基于事先编辑好的规则来优化。第二类是基于代价评估方式。下图左侧是目前传统商业化最优索引推荐引擎架构,SQL导入之后,对其进行分析,生成候选索引。然后通过代价评估,这时会通过数据库服务器WHAT-IF能力获得这些候选索引的代价。基于WHAT-IF接口返回的结果进行代价评估,最后进行最终的索引合并择优。这是传统数据库中基于代价评估的最优索引推荐流程。但是,对于例如MySQL这样的数据库引擎,这个过程中还是面临几个挑战:
挑战一:在MySQL中WHAT-IF功能是缺失的;
挑战二:MySQL中没有完整的统计信息可使用;

因此需要对此架构进行优化,既在SQL引擎和数据库服务器间加一个内置优化器,通过内置优化器提供WHAT-IF功能。但这种架构依然会面临几个挑战:

挑战三:如何最大限度缩小两个优化器的差距;
挑战四:内置优化器中的统计信息与MySQL中的统计信息存在差异,那么应该如何缩小或者优化它们之间的统计信息的差异?

3.png

单SQL优化诊断 —— 优化推荐算法选择·基于代价评估方式

首先在内置优化器部分,阿里会在物理计划基础上进行代价评估,然后从中选择。这里与传统数据库中的优化器不同点在于加入候选索引、SQL改写的考量。另外,优化器是基于统计信息进行代价计算,因此在统计信息问题上采用了自适应采样算法,自适应采样实现在指定误差范围内自适应决定数据采样量。还需要注意的一点是数据采样的过程不能对目标数据库实例造成太大的压力。

4.png

单SQL优化诊断 —— 足够覆盖度的测试集·整体思路

为了保证SQL优化引擎覆盖足够全面,那么就需要足够的测试集。选择测试集时会面临三个问题,首先在选择的测试集中要包含什么样的测试案例?第二点,多少测试案例能够证明已经足够全面?第三点,目前SQL优化引擎的能力在什么位置?测试集的选择之所以困难是因为影响SQL优化的因素太多, 如何让这些特征一一映射到测试案例也是较为庞大的工程。还有,测试案例设计需要专业知识且信息量大,对于单一测试案例设计也需要专业知识且测试案例中携带的信息量大。

测试案例覆盖度分析报告是通过下图右侧的流程来生成,首先是分析影响SQL优化的因素,将其分解为多维度的测试案例特征集。之后通过特征形式化描述,生成测试案例形式化特征库。之后借助阿里丰富的业务场景,收集线上全量SQL及全量慢SQL。然后结合形式化的特征,抽取线上测试案例,生成测试案例库。最后结合测试案例运行系统和测试案例分析工具,评估测试案例覆盖度,生成分析报告。整个过程中首先是在对多维度特征进行形式化转化,然后通过线上资源构建通往引擎测试集的桥梁,另外,对引擎测试集构建查漏补缺的一把尺子。

5.png

单SQL优化诊断 —— 足够覆盖度的测试集·测试用例特征化

下图展示了测试用例特征化的结构。首先从影响索引选择的因素出发,列出这些因素。然后将SQL分为Single Table 和Multi Table两个场景,分别从影响因素往下分SQL语句。再通过三种场景,完成特征集到能力级的映射。

6.png
这三种场景分别是L1、L2、L3。L1支持对核心标签谓词部分、聚合排序部分做全排列,保证非核心标签被覆盖,对谓词聚合排序做粗粒度排列组合。L2包括对LIMIT的支持、NOT谓词、聚合支持、函数支持、OR谓词的支持、两表的INNER JOIN、单表或两表的UNION、SUBQUERY支持、隐式转换等。L3包括三表到五表的INNER JOIN、UNION、SUBQUERY、LEFT/RIGHT JOIN、NATUAL JOIN等。

7.png

单SQL优化诊断 —— 大规模诊断能力与数据驱动

支持大规模的业务场景的诊断服务,SQL优化策略的实践还需要完成很多的事情。首先对计算服务进行拆分、保证计算服务横向伸缩、还要有效保证并行采样效率、控制资源并发访问、消除优先级调度隔离、缓冲业务峰值。这样才能满足在线上支持大规模业务场景的SQL优化的应用。
8.png

2. 基于Workload全局优化

上面一直在讨论对单SQL的优化策略,那么从支持业务角度而言,还是需要从全局出发,做全局优化。全局优化是以Workload负载为优化单位,综合考虑Workload中影响整体性能的特征,实现负载整体性能最大化提升,同时最大化降低空间消耗。如下图左侧,从全量SQL中提取Workload负载情况,通过SQL全局优化引擎,在考虑存储约束条件S,以及成本约束条件C的情况下,输出需要创建的新索引、需要改写的新索引、需要删除的新索引、并提供SQL改写建议。
9.png
下图左侧的表格里是一系列简单的SQL语句和Workload特征,包括INSERT语句,SELECT语句,在每个时间段内执行次数。如果从单SQL优化的角度,会推荐SQL2-SQL6的四条优化语句。但是从Workload全局优化角度考虑会推荐两项SQL优化。Workload全局优化相比与单SQL优化整体RT下降了14.45%,索引空间节省了50%。
10.png

三、SQL自动优化闭环

1. SQL自动优化闭环 —— 实践效果

SQL自动优化闭环指的是从问题SQL识别到基于Workload全局优化建议自动生成与评估、优化上线再到量化追踪评估的全自动优化闭环。自动优化闭环将人工的被动式优化转变为以智能化为基础的主动式优化。下图左侧展示了整个SQL自动优化闭环的几个关键优化节点。首先是持续24小时的跟踪,进行指标异常检测和Workload异常检测,发现异常点。之后通过SQL优化引擎,给出优化建议。如果用户采纳自动优化建议,则灰度上线。如果不采纳,则需要通过智能压测验证,再到灰度上线,然后进行优化效果跟踪。
阿里实现了SQL优化的全自动化闭环,自动SQL优化持续保持数据库实例运行在最佳优化状态,目前阿里内部自动优化了4900万慢SQL,全网慢SQL显著下降了92%,全网慢SQL推荐率达到了75%。自动优化闭环在云上辅助自治了30万多的服务实例,全网实例月增长率达到90%。SQL自动优化闭环希望从规模性、精准性、安全性、全面性、联动性等方面持续优化提升,服务更多用户。
11.png

2. SQL自动优化闭环 —— 生成基于压测的优化收益报告

下图左侧是基于压测的优化收益报告。根据SQL优化引擎生成的SQL优化的建议,选取用户真实的负载数据情况,进行压测。压测完成之后生成在真实的场景下对优化建议的综合评估,分析优化收益。
12.png

3. SQL自动优化闭环 —— 演示复盘

SQL优化为用户提供了丰富的测试场景,基于SQL自动优化只是其中一个场景。那如何将SQL自动优化与其它测试场景混合到一起?这又将产生什么奇妙的效果?同时可以解决哪些问题?
下图展示了随时间变化的数据库性能变化图,以及过程中SQL自动优化做的事情。图中黄色线条是活跃会话数,深蓝色线条表示CPU利用率,浅蓝色线条是IOPS利用率。第一个阶段是橙黄色部分,既在2020年9月3日21:06 数据库出现异常,此时可以1分钟内发现异常、2分钟内定位异常,并自动发现SQL限流,然后限流生效,黄色活跃会话数回归原位,深蓝色CPU利用率下降,业务恢复正常。到第二阶段绿色部分SQL自动优化启动,在2020年9月3日21:17 发起异常SQL优化诊断,紧接着优化索引变更上线,索引变更结束,进行24小时跟踪,然后解除限流。随即推出规格升配(Autoscaling)建议,根据负载的变
化升级数据库规格。
13.png

作者:stromal

原文链接

本文为阿里云原创内容,未经允许不得转载

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

更便捷:阿里云DCDN离线日志转存全新升级

简介: 1月6日,阿里云CDN年度产品升级发布会中,阿里云CDN产品专家邓建伟宣布DCDN离线日志转存全新升级,并对离线日志转存方案的价值、应用及使用进行了详细解读。 1月6日,阿里云CDN年度产品升级发布会中,阿里…

20 行代码:Serverless 架构下用 Python 轻松搞定图像分类和预测

简介: 本文将会通过一个有趣的 Python 库,快速将图像分类的功能搭建在云函数上,并且和 API 网关结合,对外提供 API 功能,实现一个 Serverless 架构的“图像分类 API”。 前言 图像分类是人工智能领域的一个热门话题。…

夯实数字化转型算能基石 构建洛阳银行核心云

作者 | 李清溪 洛阳银行信息技术部副总经理 当前,以移动互联网、云计算、大数据、区块链等技术为代表的新一轮科技革新正全面渗透到经济社会各行业各领域。在推动数字经济与实体经济融合发展的同时,也不断改变和重塑着银行业的发展模式和经营理念。 根…

DTCC 2020 | 阿里云程实:云原生时代的数据库管理

简介: 随着云原生技术的不断发展,数据库也逐渐进入了云原生时代。在云原生时代,如何高效、安全且稳定地管理云上与云下的数据库成为摆在企业面前的一大难题。在第十一届中国数据库技术大会(DTCC2020)上,阿里…

针对数据库连接池到DRDS连接探活的优化

简介: 针对数据库连接池到DRDS连接探活的优化 1. 问题背景 近期在给某专有云客户进⾏云产品应⽤性能优化分析时,发现了⼀个有趣的关于DRDS使⽤层⾯的问题,这⾥给⼤家分享⼀下。 使⽤过DRDS产品的同学都知道在DRDS中,未分库分表的…

用友BIP|YonBuilder+APICloud 双平台,“1+1>N”的低代码战略

作者 | 宋慧 出品 | CSDN云计算 头图 | 付费下载于视觉中国 作为企业IT信息化中最热的话题,低代码被广泛关注和讨论。国内低代码赛道的厂商众多,传统表格控件厂商、互联网巨头、创业公司,各具优势,在市场攻城拔寨。而国外&#x…

人生苦短,开发用云-如何优雅完成程序员的侠客梦

简介: Coding的魅力如此之强,引无数程序员竞折腰,在今年由CSDN举办的1024程序员节上,中国初代程序员大宗师求伯君说,当年看到有人在用WPS,可开心了,因为有很多人用。然后,也会去找看是谁破解的&…

DTCC 2020 | 阿里云王涛:阿里巴巴电商数据库上云实践

简介: 第十一届中国数据库技术大会(DTCC2020),在北京隆重召开。大会以“架构革新 高效可控”为主题,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨。在数据库智能运维专场上…

SRE技术保障平台-盯屏中心TAC: 混合云一站式告警运维平台

简介: SRE技术保障平台-盯屏中心TAC: 混合云一站式告警运维平台 1.目标定位 1.1背景 告警管控平台种类繁多告警出现后未及时发现处理最终导致故障产生专有云监控能力拉起依赖版本升级,操作复杂,迭代慢异常问题和故障的感知力不如…

安全攻击层出不穷,绿盟科技“智慧安全 3.0”安全防护再升级

随着网络空间和物理空间的边界不断融合,威胁攻击也层出不穷:5月9日,美国最大的燃油管道运营商、东部地区油气输送主要动脉 Colonial Pipeline 公司遭受黑客攻击和勒索,被迫暂停运营,直接导致了美国17个州和华盛顿特区进…

技术干货 | “选图预览并上传”的场景如何解?全网最全方案汇总来了

简介: 你真的知道如何“上传”一张照片吗? 选择本地相册图片或者拍照,然后预览并且上传是移动应用中一个典型的使用场景,比如常见的身份证信息上传等。 不少客户都反馈有类似的场景,并且在使用上都或多或少的遇到一些…

Serverless 在 SaaS 领域的最佳实践

简介: 随着互联网人口红利逐渐减弱,基于流量的增长已经放缓,互联网行业迫切需要找到一片足以承载自身持续增长的新蓝海,产业互联网正是这一宏大背景下的新趋势。我们看到互联网浪潮正在席卷传统行业,云计算、大数据、人…

5G进入爬坡期,这个关键因素,决定了它的成败……

作者: 小枣君来源: 鲜枣课堂前言2021年上半年,国内5G推进取得了不错的进展。根据工信部最新的数据统计,截止6月底,国内5G基站数量达到96.1万,即将突破百万大关。而国内5G终端连接数,也相比年初猛…

如何降低微服务测试成本?我的经验之谈

简介: 本文为大家介绍微服务治理测试:基于服务契约信息,降低云上微服务测试成本。如果您的团队具备较强的微服务治理测试能力,那么希望我们在微服务治理测试方面的实践和背后的思考,可以为您提供一些参考。 前言 随着…

C语言偏科,C

即使目前的汽车工业发展飞速,类似智联系统、自动驾驶等“黑科技”层出不穷。但不少消费者却仍将关注点放在车辆的基础性能上,譬如它们的安全系数。的确,对于一台行驶在路上的代步工具而言,再多花哨的功能也只能是锦上添花&#xf…

分布式全链路灰度发布的探索与实践

简介: 在分布式系统中,由于分布式全链路灰度发布因其链路复杂、技术门槛高、落地难度高逐渐成为金融科技实现全链路灰度发布的难点所在。工行在分布式系统建设方面一直走在同业前列,积极探索分布式全链路灰度发布,致力于解决分布式…

漫画:什么是 HTTPS 协议?

作者:小灰来源:程序员小灰什么是HTTP协议?HTTP协议全称Hyper Text Transfer Protocol,翻译过来就是超文本传输协议,位于TCP/IP四层模型当中的应用层。HTTP协议通过请求/响应的方式,在客户端和服务端之间进行…

DTCC 2020 | 阿里云张鑫:阿里云云原生异地多活解决方案

简介: 异地多活,顾名思义就是分布在异地多个站点同时对外提供服务,与传统灾备最主要的区别是“多活”里所有站点都是同时在对外提供服务的。在业务不断复杂化和容灾要求不断严格化的今天,如何实现云原生的异地多活解决方案&#x…

政企边缘安全,如何助您提升企业的“免疫力“?

简介: 在数字化进程中,政企会面临诸多在线化的挑战,一方面要求业务能够在线开放,同时也要求服务是稳定流畅可靠的,此外还要保证安全合规,这对业务开发及运营者提出了极高要求。1月6日,阿里云CDN…

在部队敲代码是一种什么样的体验?

作者 | 千鸟(网名) 小路助手开发者责编 | 晋兆雨出品 | CSDN(ID:CSDNnews)CSDN编者按:对于大多数人来说,大学毕业后选择一家满意的公司,一路升职加薪才是正解,但他却偏…