一、 性能诊断与优化
数据库自治服务(Database Autonomy Service,简称DAS)是一种基于机器学习和专家经验,以实现数据库自感知、自修复、自优化、自运维和自安全的云服务。DAS能够帮助用户消除数据库管理的复杂性及人工操作引发的服务故障,有效保障数据库服务的稳定、安全及高效。
目前,该服务已在阿里巴巴集团上线超3年,自动优化了超4200万条SQL,自动回收了近4PB空间,优化了近27TB内存,为数据库治理做出巨大贡献。
DAS产品核心理念主要包括数据驱动、机器学习+专家经验、诊断流程闭环、主动/持续进行、全局优化和规模优化等方面。
DAS基于机器学习和细粒度监控数据实现了7x24小时异常监测,提供了自动SQL限流、异常快照、自动SQL优化、存储空间自动扩展、计算资源自动扩展等功能。
DAS通过异常发现、根因分析等模块进行止损和优化,实现了诊断流程闭环。同时,DAS还实现了无人工参与的自治场景支持,使服务自身具备构建学习能力。
依托线上业务场景的积累,DAS沉淀了大量的案例,并用案例作为驱动,加速自我进化,提升自治有效性。
数据驱动是指DAS通过对海量实时数据,如性能指标、负载SQL请求日志、运维变更日志等的收集,构建了探测能力,具备了环境态势实时感知、异常实时发现能力。
自我决策能力是指DAS通过机器学习及数据库专家经验的深度融合,能够在不同的业务场景下做出决策。
自动执行能力是指DAS能够根据自治中心决策,自动进行任务编排并执行。
SQL自动限流功能主要应用于以下三个场景:
• 流量问题。缓存穿透或异常调用导致某类SQL并发量在短时间内急剧上升的问题。
• 数据问题。存在大量订单数据的账号下,相关SQL占用了大量数据库资源的问题。
• SQL问题。未创建索引的SQL被大量调用,从而影响正常业务的问题。
SQL自动限流的流程主要分为以下几个步骤:
• 异常检测。DAS通过机器学习对实例历史性能数据进行离线训练并获得模型,通过对该模型指标数据异常监测,DAS能够及时发现数据库异常,并进行根因分析。
• 根因分析。该模块将订阅实例异常事件,并采集异常时会话信息。结合SQL审计中全量SQL及MySQL中的统计信息进行判断,定位实例异常原因。
该异常通常分为阻塞性SQL、资源消耗型SQL和流量型SQL三种。资源消耗型SQL并发量较小,但会消耗大量的CPU、IO网络资源。流量型SQL会触发数据库瓶颈,导致KV类查询响应时间异常。
• 特征提取。当发现存在需要限流的异常SQL时,DAS会对这些SQL的特征进行精确提取,防止因特征提取错误导致的业务全面受损。
在理想的情况下,SQL特征是唯一的。DAS只对识别到的异常SQL进行限流,而不影响其他SQL。
• 自动限流。当发现实例中存在消耗型资源SQL或流量型SQL时,DAS会自动提取特征,根据配置对SQL进行限流。
• DAS还会进行自动优化、跟踪和回滚。例如,若根因分析模块发现了可以优化的异常SQL时,除发起应急处理外,DAS还会将异常SQL发送到自动优化模块,自动创建索引进行优化。
SQL自动限流在DAS自治中心的会话管理页面,用户可以进行开关操作以达到限流的目的。
SQL自动限流会自动进行判断并处理相关问题。该实例中,数据库起初正常运行。22:56,活跃会话数飙升超过100,大量全表扫描的SQL不断被提交到数据库中。用户采用Kill操作无法解决,流量基本跌0,企业业务已处于不可服务状态。
DAS通过7x24小时异常检测技术,迅速定位到该异常,并自动进行根因分析。定位到该异常SQL,触发限流操作,限制包含上述关键字的SQL允许执行的最大并发数。22:59,企业业务恢复正常。
DAS支持SQL诊断功能,用户可以根据SQL诊断得到的索引优化的建议,对实例中的表进行索引的创建,也可以在自治中心中打开创建索引的开关,由DAS自动进行SQL诊断和创建索引。
自动创建索引是DAS自动优化功能的一种,其原理在于MySQL内核原生支持的Online DDL。
如果有大量的慢SQL被MySQL被检测到,DAS将会在页面展示出具体的问题和需要创建的索引,在某一个时段自动添加索引,以提升服务性能。
接下篇: