企业运维训练营之数据库原理与实践—数据库DAS简介和备份上云方案—性能诊断与优化(上)

简介: 企业运维训练营之数据库原理与实践—数据库DAS简介和备份上云方案—性能诊断与优化(上)

一、 性能诊断与优化

 

image.png

 

数据库自治服务(Database Autonomy Service,简称DAS)是一种基于机器学习和专家经验,以实现数据库自感知、自修复、自优化、自运维和自安全的云服务。DAS能够帮助用户消除数据库管理的复杂性及人工操作引发的服务故障,有效保障数据库服务的稳定、安全及高效。

 

目前,该服务已在阿里巴巴集团上线超3年,自动优化了超4200万条SQL,自动回收了近4PB空间,优化了近27TB内存,为数据库治理做出巨大贡献。

 

image.png

 

DAS产品核心理念主要包括数据驱动、机器学习+专家经验、诊断流程闭环、主动/持续进行、全局优化和规模优化等方面。

 

DAS基于机器学习和细粒度监控数据实现了7x24小时异常监测,提供了自动SQL限流、异常快照、自动SQL优化、存储空间自动扩展、计算资源自动扩展等功能。

 

DAS通过异常发现、根因分析等模块进行止损和优化,实现了诊断流程闭环。同时,DAS还实现了无人工参与的自治场景支持,使服务自身具备构建学习能力。

 

依托线上业务场景的积累,DAS沉淀了大量的案例,并用案例作为驱动,加速自我进化,提升自治有效性。

 

数据驱动是指DAS通过对海量实时数据,如性能指标、负载SQL请求日志、运维变更日志等的收集,构建了探测能力,具备了环境态势实时感知、异常实时发现能力。

 

自我决策能力是指DAS通过机器学习及数据库专家经验的深度融合,能够在不同的业务场景下做出决策。

 

自动执行能力是指DAS能够根据自治中心决策,自动进行任务编排并执行。

 

image.png

 

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发送到自动优化模块,自动创建索引进行优化。

 

image.png

 

SQL自动限流在DAS自治中心的会话管理页面,用户可以进行开关操作以达到限流的目的。

 

image.png

 

SQL自动限流会自动进行判断并处理相关问题。该实例中,数据库起初正常运行。22:56,活跃会话数飙升超过100,大量全表扫描的SQL不断被提交到数据库中。用户采用Kill操作无法解决,流量基本跌0,企业业务已处于不可服务状态。

 

DAS通过7x24小时异常检测技术,迅速定位到该异常并自动进行根因分析。定位到该异常SQL,触发限流操作,限制包含上述关键字的SQL允许执行的最大并发数。22:59,企业业务恢复正常。

 

image.png

 

DAS支持SQL诊断功能,用户可以根据SQL诊断得到的索引优化的建议,对实例中的表进行索引的创建,也可以在自治中心中打开创建索引的开关,由DAS自动进行SQL诊断和创建索引。

 

自动创建索引是DAS自动优化功能的一种,其原理在于MySQL内核原生支持的Online DDL。

 

image.png

 

如果有大量的慢SQL被MySQL被检测到,DAS将会在页面展示出具体的问题和需要创建的索引,在某一个时段自动添加索引,以提升服务性能。

 

接下篇:

相关实践学习
使用DAS实现数据库自动扩容和回缩
暂无
相关文章
|
9天前
|
存储 NoSQL 分布式数据库
微服务架构下的数据库设计与优化策略####
本文深入探讨了在微服务架构下,如何进行高效的数据库设计与优化,以确保系统的可扩展性、低延迟与高并发处理能力。不同于传统单一数据库模式,微服务架构要求更细粒度的服务划分,这对数据库设计提出了新的挑战。本文将从数据库分片、复制、事务管理及性能调优等方面阐述最佳实践,旨在为开发者提供一套系统性的解决方案框架。 ####
|
10天前
|
存储 SQL 数据库
深入浅出后端开发之数据库优化实战
【10月更文挑战第35天】在软件开发的世界里,数据库性能直接关系到应用的响应速度和用户体验。本文将带你了解如何通过合理的索引设计、查询优化以及恰当的数据存储策略来提升数据库性能。我们将一起探索这些技巧背后的原理,并通过实际案例感受优化带来的显著效果。
28 4
|
11天前
|
SQL druid 数据库
如何进行数据库连接池的参数优化?
数据库连接池参数优化包括:1) 确定合适的初始连接数,考虑数据库规模和应用需求;2) 调整最大连接数,依据并发量和资源状况;3) 设置最小空闲连接数,平衡资源利用和响应速度;4) 优化连接超时时间,确保系统响应和资源利用合理;5) 配置连接有效性检测,定期检查连接状态;6) 调整空闲连接回收时间,适应访问模式并配合数据库超时设置。
|
16天前
|
SQL 缓存 监控
数据库优化
【10月更文挑战第29天】数据库优化
27 1
|
16天前
|
缓存 关系型数据库 MySQL
如何优化 MySQL 数据库的性能?
【10月更文挑战第28天】
38 1
|
9天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
24 1
|
11天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
26 4
|
1月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
61 3
Mysql(4)—数据库索引
|
18天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
85 1
|
20天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
61 2