数据库诊断优化是提高数据库性能和稳定性的关键技术之一。过去几年阿里巴巴集团数据库规模急剧增长并且业务变化越来越快,传统DBA人工加工具的诊断和优化方法在规模如此之大,业务场景如此复杂的今天面临极大的挑战。于是,自动化、智能化的运维方法和工具的需求就尤为迫切。
阿里巴巴技术团队在这方面不断摸索与尝试,并推出了CloudDBA智能化运维产品,将技术专家的运维智慧和经验凝聚成产品的规则引擎,并利用机器学习学习算法为产品导入智能化模块,从而将大量的数据库的诊断分析和优化工作都自动完成,不仅将DBA从繁冗的工作中解救出来,还能够帮助企业数据库快速上云。
数据库的问题诊断和性能分析对于DBA来说,一直是一件困难的事情。阿里的技术专家讲其原因总结为以下三点:
- 第一难:获取信息难,问题诊断和性能优化都需要依赖于大量的系统数据,甚至是长期的历史数据,只有基于完备的信息才能给出准确的解法。架构一套完善的数据库监控体系,可不是一件易事,信息收集的全面深入则就更困难了。
- 第二难:分析信息难,需要多年的经验才能给出准确的解法,也需要多样的场景才能覆盖比较全面的问题类型。经验与场景,一不好传承,二变化较快,三他人理解不易。
- 第三难:优化手段难,找出问题了,知道怎么办了,也并不意味着就能马上解决问题,甚至有些解法是要深入到数据库引擎层代码优化,这可不是一朝一夕就能做好的。
那么阿里的云数据库是如何解决这些问题的呢?
针对获取信息难的问现状,为了给问题的诊断提供更详尽完整的基础数据,阿里的CloudDBA设计了特有的监控体系。
常见的监控如下图所示,图一是主动拉取监控信息方式,图二是由agent定期上报监控信息形式,一般图二架构也可以是图一基础上增加agent部分。
阿里云数据库监控体系要更深一步,监控内容面更广,同时监控手段更先进,内核团队针对监控特别优化,可以获取完整的数据库执行语句详情和数据库全局快照,而对性能影响微乎其微,最多带来2%的性能差异。
同时利用阿里云大数据技术能力,实现了冷热数据的计算加速,大量历史数据可以快速完成计算工作,可以很快给出分析结果,架构如下图,增加了从数据库到日志文件的写入部分强调阿里云特有的内核日志优化工作。
其次,针对数据库问题的分析,在产品中导入智能算法,并形成特有的四大引擎。
阿里云DBA专家多年优化诊断经验就沉淀在CloudDBA的规则引擎系统上,通过规则引擎可轻松实现一种业务场景的问题、条件与解法的研发。并且利用了机器学习能力,自动去抽象各业务的独有特色,可以很方便的实现独立业务和普适规则的匹配,为业务特有场景轻松推荐最优的优化解法。由于阿里云业务的快速发展,目前数据库实例已经超过10万,规则引擎中的优化模型越来越完备,而差异算法可轻松识别新的业务场景,若真出现没有遇见过的“遗漏”,也可最快兼容。
图四就是CloudDBA的四大引擎工作架构图,将专家知识库作为规则引擎工作的原材料,这是阿里云数据库服务海量实例的特有数据。
四大引擎解释说明如下:
规则引擎:后台灵活配置各种性能规则,问题、条件和解法,可快速实现新场景的优化方案开发。
性能分析引擎:实时分析潜在性能风险,每种性能都有预先可定制的性能规则。
实时诊断引擎:实时响应用户诊断具体对象问题,每个资源都有一系列定制化的检查规则列表。
SQL优化引擎:基于历史数据,分析SQL、事务、锁等核心DB资源的性能问题,并给出优化改进建议。
同时,在产品化的界面上,数据库的分析及诊断通过完善的报告形式展示给用户,如下图所示:
而广大DBA最关注的问题莫过于数据库能否真的实现自动优化,尤其是oow上推出了Oracle 18c自治数据库之后。那么阿里的云数据库能否做到真的自动优化呢?(你可能感兴趣:深入解读Oracle 18c对于DBA的影响及应对措施)
客观上讲,阿里的云数据库目前在自动性能优化的方面仍在不断的探索当中,目前的自动优化功能主要是帮助数据库寻找最佳执行路径,将其优化成更为简洁和高效的视图:
也就是将其解析为DBA以外的人员更能理解的视图。包括产品、架构师、开发等。
自动优化的实例如下:
随着技术的发展和业务的创新,海量非结构化数据和高并发场景成为企业迫切需要关注的问题,而人工的运维和管理远远不能满足业务的需求,正在这种情况下,数据库系统的运维终将朝着自动化和智能化的方向不断演进。
更多你想了解的技术细节在这里:
今年第七届数据技术嘉年华上,我们有幸邀请到了来自阿里的产品专家胡航丽为大家带来 围绕CloudDBA的主题分享,将围绕CloudDBA产品,解读阿里在数据库的自动化和智能话运维上的探索尝试及成果,分享CloudDBA产品的核心的技术及设计理念。分享主题:CloudDBA-数据库智能优化服务。
原文发布时间为:2017-10-29
本文作者:Roman Trusov
本文来自云栖社区合作伙伴“数据和云”,了解相关信息可以关注“数据和云”微信公众号