AnalyticDB MySQL版重磅发布智能建模诊断与优化功能

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 云原生数据仓库AnalyticDB MySQL版提供的智能建模诊断与优化功能,主要分为「冷热数据优化」、「无效索引优化」、「分布键优化」三大功能,目的是帮助客户降低数据/索引的存储成本,提高Join场景性能。

随着客户各类数据分析业务的丰富和发展,数据库所承载的查询数量和复杂度都会持续增加,特别是对于数据库表结构的设计和优化,往往对数据库整体使用成本和查询性能有较大影响。想做好相关的库表结构设计和优化,用户往往需要关注以下几个部分:

  • 需要了解引擎架构:用户往往需要对数据库引擎的存储和计算架构特点有一定的了解,才能和业务的数据分布特征以及业务场景特征完美结合,来进行数据建模,从而设计出符合引擎架构特点的表结构。
  • SQL特性差异较大:即席查询的SQL往往特性差异较大,包括参与Join的表个数、Join条件、分组聚合的字段个数以及过滤条件等。
  • 数据特征变化较快:用户的数据分布特征是会随着业务特征的变化而变化的,如果一直按照最初的建模方式和SQL语句,也是无法保障能发挥出SQL引擎的最大优势,数据特征或者业务模型的变化,都会导致SQL性能回退。

基于此,AnalyticDB MySQL版(新一代云原生实时数据仓库,语法兼容MySQL,以下简称ADB)为用户提供了高效且智能化的「智能建模诊断与优化」功能,直观的为用户提供相关调优的建议,降低用户使用成本,提高用户使用ADB的效率。本功能通过对用户SQL查询所使用到的数据表、索引、查询性能的历史信息进行统计,在此基础上进行智能分析并提供调优建议,本文介绍如何查看和和使用相关建议。


调优建议类型

冷热分层优化:

  • 弹性实例支持数据存储的冷热分离配置(https://help.aliyun.com/document_detail/189727.html),冷数据存储到低成本的存储介质上,可以降低整体使用成本,本项建议分析数据表的使用情况,对于长期未使用的数据表,提出移至冷存的建议。
  • 本建议的优化单位为一个数据表的整体,优化后数据表存储成本会降低;若再次查询该数据表,查询时间会增长。

很多业务 BI 分析查询具有强烈的周期性,很多数据表只有每个月、每个季度才会用到一次。像这样低频使用的数据表完全可以利用弹性实例提供的冷热数据分离存储的功能,在不使用的时候先移至冷存,降低存储成本。只在使用的时候才移至热存。

1.png

如上图所示,我们对弹性实例利用冷热分离存储建议可以获得的潜在收益进行了统计。可以看到60%的实例可以通过本建议的提示,将 15 天未使用的数据表移至冷存,节省 3 成以上的热存空间,降低存储成本。


无效索引优化:

  • AnalyticDB MySQL版通过增加数据索引提高扫描数据的速度,达到查询性能的提示(https://help.aliyun.com/document_detail/296045.html)。数据索引也会占用磁盘空间,提高使用成本。本项建议分析数据索引的使用情况,对于长期未使用的数据索引,提出考虑删除的建议。
  • 本建议的优化单位为一个列的数据索引,优化后数据索引的存储成本会降低;若查询再次使用改数据列进行过滤操作,查询时间会增长。

数据库建表时默认对全部数据列进行索引,这样可以极大的简化用户建表时的负担,无需用户提前预知业务查询的特性,保证查询性能最大化。但与此同时,实际业务往往只会用到几个列的索引进行查询和数据过滤,长期无用的索引反而增加了存储的成本。

2.png

如上图所示,我们对线上实例利用索引优化建议可以获得的潜在收益进行了统计。可以看到50%的实例可以通过本建议的提示,将 15 天未使用的索引进行删除,节省 3 成以上的热存空间,降低存储成本。


分布键优化:

  • AnalyticDB MySQL版的查询执行依赖分布式计算和存储的架构(https://help.aliyun.com/document_detail/211215.html),特别是进行JOIN、聚合等计算时,往往需要通过网络传输对数据进行分布,合理选择数据表分布列可以减少网络开销,提高查询效率。如果数据表的分布列和实际查询的数据分布特征不一致,就会造成查询时间增长、查询效率降低等问题。本项建议分析数据查询实际需要使用的分布列与数据表定义的分布列的差异,提出考虑改变数据表分布列的建议。
  • 分布键优化建议的优化单位为表,也即对整张表的分布列进行优化,优化后涉及到该表分布列的相关查询,性能一般会增加;若同一张表同时有其他涉及到非分布列的查询存在,就会导致分布列选择的矛盾,我们的算法会按照整个库级别查询最优目标,使用优化算法选择每张表的最优分布列。
  • 下面列举两个简单的例子,我们的测试表A和表B分别有5百万行的数据,第一个例子,对于JOIN查询:
SELECT*FROM A INNER JOIN B ON A.order_id= B.order_idLIMIT1000;

我们对比两种情况:1. 表A按照自增id分布;2.表A按照JOIN列order_id分布,这里表B假设已经按照order_id分布。对于这两种情况,分别执行查询,测试结果是表A按照JOIN列order_id分布,查询时间会快大约30%,原因就是JOIN前无需进行网络传输对数据重分布。第二个例子,对于聚合查询:

SELECT order_id, max(total)FROM(SELECT order_id, sum(amount)AS total
FROM A
GROUPBY order_id
)

我们对比两种情况:1. 表A按照自增id分布;2.表A按照聚合列order_id分布。对于这两种情况,分别执行查询,测试结果是表A按照聚合列order_id分布,查询时间会快大约60%,同样是因为节省了数据重分布的网络传输时间,计算节点可以直接在本地进行聚合操作。


用户界面指南

用户通过控制台左边栏「诊断与优化」 -> 「库表结构调优」分页访问该功能

可采纳建议的查看

可用优化建议如下图所示,每条建议包含建议 ID, 建议类型,建议对应的 SQL, 给出建议的原因,建议收益估算等信息。其中建议对应的SQL为应用建议需要变更的表和相应定义等。建议优化收益为基于历史数据统计的预估值,非实时统计的准确值,仅供参考。

3.png


一键应用优化建议

用户点击“一键应用”按钮,即表示同意采纳该优化建议,并将相应变更的 SQL 下发到实例进行执行,下发后改建议会出现在“已采纳建议”分页中。下发的建议如同在客户端执行相应 SQL,不支持撤销操作,请谨慎使用。

4.png


已采纳建议的查看

用户可以按采纳建议日期和时间查询已采纳的建议;建议 SQL 下发后,需要数据表完成 build 方可完成应用,build 操作是数据库系统按一定规则自动触发的,未触发前,相应建议处于“运行中”的状态,触发后变为“已完成状态”

5.png


开启和关闭优化建议功能

6.png

用户可以通过开关按钮,打开和关闭优化建议的显示功能。


欢迎使用,并提供您宝贵的建议和反馈!

本功能现面向有意向使用的客户进行开放,欢迎进钉钉支持群联系我们。

7.png

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
相关文章
|
9天前
|
关系型数据库 MySQL Linux
MySQL原理简介—6.简单的生产优化案例
本文介绍了数据库和存储系统的几个主题: 1. **MySQL日志的顺序写和数据文件的随机读指标**:解释了磁盘随机读和顺序写的原理及对数据库性能的影响。 2. **Linux存储系统软件层原理及IO调度优化原理**:解析了Linux存储系统的分层架构,包括VFS、Page Cache、IO调度等,并推荐使用deadline算法优化IO调度。 3. **数据库服务器使用的RAID存储架构**:介绍了RAID技术的基本概念及其如何通过多磁盘阵列提高存储容量和数据冗余性。 4. **数据库Too many connections故障定位**:分析了MySQL连接数限制问题的原因及解决方法。
|
11天前
|
SQL 关系型数据库 MySQL
MySQL进阶突击系列(07) 她气鼓鼓递来一条SQL | 怎么看执行计划、SQL怎么优化?
在日常研发工作当中,系统性能优化,从大的方面来看主要涉及基础平台优化、业务系统性能优化、数据库优化。面对数据库优化,除了DBA在集群性能、服务器调优需要投入精力,我们研发需要负责业务SQL执行优化。当业务数据量达到一定规模后,SQL执行效率可能就会出现瓶颈,影响系统业务响应。掌握如何判断SQL执行慢、以及如何分析SQL执行计划、优化SQL的技能,在工作中解决SQL性能问题显得非常关键。
|
2月前
|
SQL 关系型数据库 MySQL
深入解析MySQL的EXPLAIN:指标详解与索引优化
MySQL 中的 `EXPLAIN` 语句用于分析和优化 SQL 查询,帮助你了解查询优化器的执行计划。本文详细介绍了 `EXPLAIN` 输出的各项指标,如 `id`、`select_type`、`table`、`type`、`key` 等,并提供了如何利用这些指标优化索引结构和 SQL 语句的具体方法。通过实战案例,展示了如何通过创建合适索引和调整查询语句来提升查询性能。
347 9
|
4天前
|
缓存 算法 关系型数据库
MySQL底层概述—8.JOIN排序索引优化
本文主要介绍了MySQL中几种关键的优化技术和概念,包括Join算法原理、IN和EXISTS函数的使用场景、索引排序与额外排序(Using filesort)的区别及优化方法、以及单表和多表查询的索引优化策略。
MySQL底层概述—8.JOIN排序索引优化
|
4天前
|
SQL 关系型数据库 MySQL
MySQL底层概述—7.优化原则及慢查询
本文主要介绍了:Explain概述、Explain详解、索引优化数据准备、索引优化原则详解、慢查询设置与测试、慢查询SQL优化思路
MySQL底层概述—7.优化原则及慢查询
|
3月前
|
SQL 关系型数据库 MySQL
大厂面试官:聊下 MySQL 慢查询优化、索引优化?
MySQL慢查询优化、索引优化,是必知必备,大厂面试高频,本文深入详解,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验分享。
大厂面试官:聊下 MySQL 慢查询优化、索引优化?
|
5天前
|
存储 缓存 关系型数据库
MySQL底层概述—5.InnoDB参数优化
本文介绍了MySQL数据库中与内存、日志和IO线程相关的参数优化,旨在提升数据库性能。主要内容包括: 1. 内存相关参数优化:缓冲池内存大小配置、配置多个Buffer Pool实例、Chunk大小配置、InnoDB缓存性能评估、Page管理相关参数、Change Buffer相关参数优化。 2. 日志相关参数优化:日志缓冲区配置、日志文件参数优化。 3. IO线程相关参数优化: 查询缓存参数、脏页刷盘参数、LRU链表参数、脏页刷盘相关参数。
MySQL底层概述—5.InnoDB参数优化
|
7天前
|
关系型数据库 MySQL 数据库
从MySQL优化到脑力健康:技术人与效率的双重提升
聊到效率这个事,大家应该都挺有感触的吧。 不管是技术优化还是个人状态调整,怎么能更快、更省力地完成事情,都是我们每天要琢磨的事。
56 23
|
7天前
|
SQL 关系型数据库 MySQL
MySQL原理简介—11.优化案例介绍
本文介绍了四个SQL性能优化案例,涵盖不同场景下的问题分析与解决方案: 1. 禁止或改写SQL避免自动半连接优化。 2. 指定索引避免按聚簇索引全表扫描大表。 3. 按聚簇索引扫描小表减少回表次数。 4. 避免产生长事务长时间执行。
|
24天前
|
监控 关系型数据库 MySQL
Aurora MySQL负载突增应对策略与优化方案
通过以上策略,企业可以有效应对 Aurora MySQL 的负载突增,确保数据库在高负载情况下依然保持高性能和稳定性。这些优化方案涵盖了从架构设计到具体配置和监控的各个方面,能够全面提升数据库的响应速度和处理能力。在实际应用中,应根据具体的业务需求和负载特征,灵活调整和应用这些优化策略。
50 22

热门文章

最新文章

相关产品

  • 云原生数据仓库AnalyticDB MySQL版