Press "Enter" to skip to content

MySQL Autopilot – MySQL HeatWave 的机器学习自动化

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

介绍

 

MySQL 因为它的可靠性、高性能和易用性,成为 世界上 最受欢迎的开源数据库 。MySQL 专为事务处理而设计和优化,全球的企业都依赖于MySQL。随着在 MySQL 数据库服务中引入 HeatWave,客户现在拥有一个可以同时进行事务处理和分析处理的单一数据库。它消除了分析处理数据库的 ETL 的需求,并为实时分析提供支持。HeatWave 建立在创新的内存查询引擎之上,该引擎专为可扩展性和性能而设计,并针对云进行了优化。MySQL HeatWave 服务比其他数据库服务(Snowflake、Redshift、Aurora、Synapse、Big Query)更快,而且成本只是其一小部分。

 

MySQL Autopilot

 

我们最近为 MySQL HeatWave 推出了 MySQL Autopilot。MySQL Autopilot 在许多重要且具有挑战性的方面进行了自动化处理,以实现大规模的高查询性能 – 包括配置、数据加载、查询执行和故障处理。它使用先进的技术对数据采样,收集数据和查询的统计信息,并构建机器学习模型,对内存使用、网络负载和执行时间进行建模。MySQL Autopilot 使用这些机器学习模型来执行其核心功能。MySQL Autopilot 使 HeatWave 查询优化器随着执行更多查询而变得越来越智能,从而随着时间的推移不断提高系统性能。

 

Autopilot专注于服务生命周期的四个方面:系统设置、数据加载、查询执行和故障处理。

 

 

图 1. MySQL Autopilot 自动化服务的不同方面,以提高系统的性能、可扩展性和可用性

 

系统设置

 

1.  自动配置,通过对需要分析的表数据进行自适应采样来预测运行工作负载所需的 HeatWave 节点数量。这意味着客户不再需要手动估计其集群的最佳大小。

 

数据加载

 

2.  自动并行加载,通过预测加载到 HeatWave 中的每个表的最佳并行度来优化加载时间和内存使用。

 

3.  自动编码,确定加载到 HeatWave 中的列的最佳表示,同时考虑查询。这种最优表示提供了最好的查询性能并最小化了集群的大小以最小化成本。

 

4.  自动数据放置,预测应在内存中对哪些表进行分区以实现最佳查询性能的列。它还通过新列推荐预测查询性能的预期收益。

 

查询执行

 

5.  自动查询计划改进,从查询的执行中学习各种统计信息,改进未来查询的执行计划。随着更多查询的运行,这会提高系统的性能。

 

6.  自动查询时间估计,在执行查询之前估计查询的执行时间,允许对不同的查询进行快速试用和测试

 

7.  自动更改传播,智能地确定 MySQL 数据库中的更改应传播到 HeatWave 存储层的最佳时间。这可确保更改以正确的最佳节奏传播。

 

8.  自动调度,确定队列中哪些查询运行时间较短,并以智能方式将它们优先于长时间运行的查询以减少总体等待时间。

 

故障处理

 

9.  自动错误恢复,如果一个或多个 HeatWave 节点由于软件或硬件故障而无响应,则提供新节点并从 HeatWave 存储层重新加载必要的数据

 

自动配置

 

自动配置提供有关运行工作负载需要多少 HeatWave 节点的建议。当服务启动时,运行分析查询的数据库表需要加载到 HeatWave 集群内存中。所需集群的大小取决于加载所需的表和列,以及在内存中为此数据实现的压缩。图 2 比较了使用自动配置和 传统(即手动)方法 进行估计集群大小。在传统配置中,用户需要猜测集群大小。由于空间限制,低估会导致数据加载或查询执行失败。高估会导致资源浪费的额外成本。用户不断进行评估,直到他们确定正确的集群大小,并且当表更新时,这个大小估计变得不准确。

 

 

图 2. 手动配置与自动配置的比较

 

图 2 的右侧显示了自动配置(一种基于 ML 的集群大小估计顾问)如何解决这个问题。通过利用训练有素且准确的 ML 模型,用户咨询自动配置顾问以获得适合其数据集的集群大小。因此,用户无需猜测集群大小。如果客户数据增长或添加了额外的表,用户可以再次利用自动配置顾问。

 

以下是在某些数据集上观察到的记忆预测准确性的示例。

 

 

自动并行加载

 

将数据加载到 HeatWave 涉及几个手动步骤。执行这些步骤所需的时间取决于模式、表、列和统计信息的数量。自动并行加载通过机器学习模型预测每个表的并行度来自动执行这些步骤,以实现最佳加载速度和内存使用。

 

自动编码

 

HeatWave支持两种字符串列编码类型:可变长度和字典。编码类型会影响查询性能以及支持的查询操作。它还影响 HeatWave 节点所需的内存量。默认情况下,HeatWave 在加载数据时对字符串列应用可变长度编码,对于某些工作负载,这可能不是查询性能和集群内存使用情况的最佳编码选择。

 

 

图 3.默认编码与自动编码的比较

 

自动编码为减少内存使用并帮助提高查询性能的字符串列提供建议。图 3 显示了默认编码和自动编码之间的区别。在默认情况下,可变长度编码可确保最佳查询卸载能力。但是,由于 HeatWave 节点和 MySQL 节点之间的数据移动,这可能会影响理想的查询性能。自动编码使用机器学习来分析列数据、HeatWave 查询历史记录和可用的 MySQL 节点内存,以确定哪些字符串列可以用字典编码进行编码。应用该建议后,由于系统中的数据移动减少,整体查询性能得到提高。并且,有效的(更小的)字典代码和对应的字典使得HeatWave内存使用量降低。

 

自动数据放置

 

将表加载到 HeatWave 时,数据放置键用于对表数据进行分区。通过 JOIN 和 GROUP BY 键列对表数据进行分区可以避免与在查询执行时在 HeatWave 节点之间重新分配数据相关的成本,从而提高查询性能。

 

确定最佳数据放置键是一项繁琐的任务,需要了解查询访问模式和系统行为。此外,由于查询执行期间数据分发成本的增加,选择错误的分区键可能会导致性能欠佳。

 

 

图 4.手动数据放置与自动数据放置的比较

 

图 4描述了默认查询执行与自动数据放置执行之间的比较。基于机器学习模型,自动数据放置通过分析表统计信息和 HeatWave 查询历史来推荐合适的数据放置键,并提供查询性能改进的估计。应用建议后,通过在执行期间最小化节点之间的数据移动来提高查询性能。

 

系统预测应在其上进行放置的最佳键,并预测执行时间的预期改进。以下是通过自动数据放置观察到的改进示例。

 

 

自动查询计划改进

 

通过改进基于先前查询执行的查询计划统计信息来提高查询性能。通过维护更准确的查询统计信息,HeatWave 创建更好的查询计划并对底层物理运算符做出更好的决策,从而提高整体查询性能。

 

 

图 5.查询 2 受益于具有自动查询计划改进的类似查询(查询 1)的统计信息

 

图 5显示了自动查询计划改进如何在没有用户干预的情况下工作。在 HeatWave 上执行查询 (Q1) 后,自动查询计划改进会收集并存储查询执行计划中所有操作的基数(例如,扫描、连接、分组依据)。当类似(或相同)的查询到达(Q2)时,系统会检查它是否可以利用之前收集的 Q2 统计信息。如果系统确定两个查询计划之间的相似性,则会根据 Q1 的统计信息生成更好的查询计划。这样做可以显着提高查询性能和集群内存使用率。

 

自动查询时间估计

 

在运行查询之前,用户通常对准确的查询时间估计感兴趣。此类功能允许用户更好地估计他们的应用程序性能,并了解所需的资源。自动查询时间估计不仅为查询运行时间提供用户可见的估计,而且还在内部使用相同的构建块通过优化查询(子)计划来提高查询性能。

 

自动查询时间估计不是使用静态的分析模型,而是集成了一个数据驱动的查询时间估计模块,该模块会随着查询的运行而改进。为此,HeatWave 利用负载和运行时统计信息并在执行期间动态调整查询成本模型。因此,随着更多查询在系统上执行,自动查询时间估计会随着时间的推移而改进。

 

自动更改传播

 

在 MySQL 中更新的数据作为更改日志传播并持久保存到 HeatWave 数据层。在数据重新加载期间,HeatWave 首先从基础数据恢复数据,然后应用更改日志中的数据。随着时间的推移,持久更改日志量会增加,这可能会导致重新加载时间增加,因为所有更改日志都需要应用于基础数据。因此,更改日志会不时合并以减轻重新加载延迟增加的情况,如图 6 所示。然而,确定何时合并并不是一件容易的事,这取决于多个因素,例如事务率、系统负载、故障概率。

 

 

图 6.自动更改传播

 

为了最大限度地减少从存储层重新加载期间的整合时间,自动更改传播使用数据驱动机制来确定最佳更改传播间隔和选择。自动更改传播分析更改率、传入 DML、对象存储资源和以前看到的更改活动。因此,更改会以最佳时间间隔传播,从而优化关键系统操作的整合时间。

 

自动调度

 

传统数据库系统根据查询的到达时间处理查询,这可能导致长时间运行的查询使短期运行的查询饿死,如图 7 所示。

 

 

图 7.传统数据库系统与 HeatWave 自动调度

 

左侧是次优情况,其中来自三个用户会话的三个查询(Q1、Q 2、Q3)一个接一个到达,并按 FIFO 顺序进行调度。 执行完成后,可以确定 Q3 的等待时间可以显着减少,同时对 Q2 延迟的影响最小。

 

在右侧,它显示了自动调度如何改善多会话应用程序中运行时间短的查询的用户体验。自动调度通过使用 HeatWave 数据驱动算法将查询自动分类为短查询或长查询来识别短期运行的查询并确定其优先级。因此,Q3 优先于 Q2,因为 Q3 被标识为短期运行查询。

 

当多会话应用程序由短查询和长查询混合组成时,自动调度显着减少了短查询所用的时间。它还确保长查询不会处于不利的位置,也不会无限期推迟。

 

自动错误恢复

 

当在节点上检测到硬件或软件故障时,HeatWave 会自动配置一个新的 HeatWave 节点。当集群恢复时,自动错误恢复会自动将数据仅重新加载到重新配置的节点,从而实现非常快速的恢复。

 

结论

 

MySQL HeatWave是唯一 基于 MySQL 数据库 提供基于机器学习自动化。MySQL Autopilot 自动执行优化配置集群、加载数据和查询处理的任务。随着执行更多查询,它使 HeatWave 变得越来越智能,从而随着时间的推移不断提高系统性能。Autopilot 的引入扩大了 MySQL HeatWave 相对于其他数据库服务的性能和性价比优势。

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注