背景
阿里云数据库为何推出CloudDBA?问题诊断(trouble shooting) 和 性能优化(performance tunning) 一直都是数据库领域的专业问题,需要资深DBA的专业技能才能胜任解决,但这样的人才是稀缺的,无法及时满足大部分的企业紧急需求。如果有一款产品能够在大多数情况下,客户借助它非常迅速的找出数据库性能隐患点、排查出问题症结所在,这将无疑协助客户解决燃眉之急,可以大大降低风险和提高效率。
先来分析下为什么数据库问题诊断和性能优化会非常难?
第一难:获取信息难,问题诊断和性能优化都需要依赖于大量的系统数据,甚至是长期的历史数据,只有基于完备的信息才能给出准确的解法。架构一套完善的数据库监控体系,可不是一件易事,信息收集的全面深入则就更困难了。
第二难:分析信息难,需要多年的经验才能给出准确的解法,也需要多样的场景才能覆盖比较全面的问题类型。经验与场景,一不好传承,二变化较快,三他人理解不易。
第三难:优化手段难,找出问题了,知道怎么办了,也并不意味着就能马上解决问题,甚至有些解法是要深入到数据库引擎层代码优化,这可不是一朝一夕就能做好的。
CloudDBA优势
阿里云数据库CloudDBA 是如何全面解决这三个问题的呢?
CloudDBA 完备的性能监控数据
我们当然可以自己搭建监控体系,采用通用开源软件来搭建,但这都意味着投入成本,同时需要对相应的系统比较了解。有些监控系统还无法满足特定业务需要,为了满足场景诉求必须要二次开发,企业之间的大量通用重复劳动是肯定存在的。常见的监控如下图图一和图二,图一是主动拉取监控信息方式,图二是由agent定期上报监控信息形式,一般图二架构也可以是图一基础上增加agent部分。
阿里云数据库监控体系要更深一步,监控内容面更广,这就要得益于多年阿里云数据库团队锲而不舍对技术的追求。同时监控手段更先进,内核团队针对监控特别优化,我们可以获取完整的数据库执行语句详情和数据库全局快照,而对性能影响微乎其微,最多带来2%的性能差异。同时我们利用阿里云大数据技术能力,实现了冷热数据的计算加速,大量历史数据可以快速完成计算工作,可以很快给出分析结果,架构如下图三,增加了从数据库到日志文件的写入部分强调阿里云特有的内核日志优化工作。
CloudDBA 智能化学习分析手段
阿里云数据库上运行着各行各业的数据库系统,覆盖了海量业务场景,阿里云DBA专家多年优化诊断经验就沉淀在CloudDBA的规则引擎系统上,通过规则引擎可轻松实现一种业务场景的问题、条件与解法的研发。并且我们利用了机器学习能力,自动去抽象各业务的独有特色,可以很方便的实现独立业务和普适规则的匹配,为业务特有场景轻松推荐最优的优化解法。由于阿里云业务的快速发展,目前数据库实例已经超过10万,规则引擎中的优化模型越来越完备,而差异算法可轻松识别新的业务场景,若真出现没有遇见过的“遗漏”,我们也可最快兼容。
图四就是CloudDBA的四大引擎工作架构图,请注意专家知识库并不是文档,而是规则引擎工作的原材料,这是阿里云数据库服务海量实例的特有数据。
四大引擎解释说明如下:
规则引擎:后台灵活配置各种性能规则,问题、条件和解法,可快速实现新场景的优化方案开发。
性能分析引擎:实时分析潜在性能风险,每种性能都有预先可定制的性能规则。
实时诊断引擎:实时响应用户诊断具体对象问题,每个资源都有一系列定制化的检查规则列表。
SQL优化引擎:基于历史数据,分析SQL、事务、锁等核心DB资源的性能问题,并给出优化改进建议。
CloudDBA 完备的调优与诊断工具
依托于云数据库的强大内核,使得在不影响业务的前提下调优与诊断变得非常简单。云数据库天然的弹性能力,无论升级或者调优对用户影响都极小。阿里云数据库内核团队,长期对技术孜孜不倦的追求,优化了大量的引擎层代码,如热升级、连接池、online DDL优化、热点行优化、在线限流工具、并行复制、秒杀补丁等,这使得调优和解决问题变得相当简单,绝大数情况您只需要一点就可以解决问题。
CloudDBA功能概述
CloudDBA根据用户使用场景,从时间维度将功能切分为两大块,分别是一个专注于当下的问题诊断和SQL操作相关功能,另外一个则专注于对历史数据进行全面分析产出系统性能优化方法功能。但这两者也不是严格的根据时间切割,如SQL操作中对语句性能的分析,也会参考过去历史性能数据产出最优的优化分析。
问题诊断功能,描述数据库当下的状态,性能问题、其他问题都会以用户一种可见资源表现出来,如CPU、连接数等。CloudDBA以这类面向用户的资源为起点,分析可能引起该问题的原因,分析逻辑在后台做到可配置,开发新代码会非常的容易,并且分析逻辑会不断扩张。我们将每个用户可见资源(如CPU)定义为一个诊断项,每个诊断项在后台规则引擎中会定义一些检查条目,当诊断时会逐个检查条目进行诊断,没有问题就忽略,有问题就会返回给分析引擎和诊断引擎,这两个引擎会结合历史数据给出结果。
第一版CloudDBA问题诊断集合包括 CPU、空间、慢SQL、锁信息、热点表等基础内容。
性能优化功能,用户可直接通过SQL操作来检查语句在指定数据库中执行是否会存在性能隐患,用户可以查看执行计划、诊断SQL获取优化结果,当然用户亦可在操作界面直接执行SQL查看结果。
CloudDBA基于内核优化的SQL审计文件,可快速查询指定时间段内的TOP SQL和问题事务。SQL语句可以根据执行次数、执行时间等多种方式排序,事务信息可找出事务包含的语句、事务执行次数、事务执行时间等信息,方便快速定位问题事务。
最后可基于时间段快速创建一份数据库诊断报告,报告可下载可分享,包含了数据库的全面分析,内容丰富如涵盖了索引、外键、死锁、连接、事务、SQL语句、空间、只读延迟等信息。一份报告就是一份数据库的快照,它涵盖了问题诊断和性能优化,如下图中展示了一个问题SQL的报告内容:
总结
阿里云数据库推出CloudDBA目的是协助客户定位解决问题,并将大量常见问题的诊断优化自动化,利用机器学习、大数据手段快速复制阿里云资深DBA的成熟经验,服务于云上企业。最后我们想说,让用户更高效使用云数据库是我们追求的唯一目标,且我们致力于将CloudDBA打造为云数据库的标准配置,而且我们不断学习不断改进永久迭代。
您可能还喜欢
历年双11实战经历者:我们是如何做数据库性能优化及运维-CloudDBA和天象