MySQL HeatWave 用户指南  / 第 2 章热浪  /  2.2 加载数据

2.2 加载数据

本节介绍如何将数据加载到 HeatWave 中。支持以下方法:

  • 手动加载数据。此方法一次加载一个表,并涉及为每个表执行多个语句。请参见第 2.2.2 节,“手动加载数据”

  • 使用Auto Parallel Load加载数据。这种支持 Autopilot 的方法一次加载一个或多个模式,并通过自动执行手动步骤和优化并行加载线程的数量以加快加载速度来促进加载。请参阅第 2.2.3 节,“使用自动并行加载加载数据”

  • 使用 MySQL HeatWave 控制台加载数据(适用于 AWS 上的 MySQL HeatWave 用户)。这种基于 GUI 且支持 Autopilot 的方法使用优化数量的并行加载线程加载选定的模式和表,以加快加载速度。请参阅 MySQL HeatWave on AWS 服务指南中的管理 HeatWave 数据

当数据加载到 HeatWave 中时,将 InnoDB使用批处理、多线程读取来读取数据。然后将其转换为柱状格式并通过网络发送,并以水平切片的形式分布在 HeatWave 节点之间。除非定义了数据放置键,否则数据按表的主键分区。请参阅 第 2.7.2 节,“定义数据放置键”

当数据加载操作正在进行时,支持 MySQL 节点上的并发 DML 操作和查询;但是,MySQL 节点上的并发操作会影响负载性能,反之亦然。

加载表后,MySQL 数据库系统节点上表数据的更改会自动传播到 HeatWave。有关详细信息,请参阅第 2.2.7 节,“更改传播”

对于在 HeatWave 中加载的每个表,从根堆分配 4MB 内存(默认堆段大小)。加载大量表时应考虑此内存要求。例如,对于 HeatWave 可用的大约 400GB 的根堆,加载 100K 表将消耗所有可用的根堆内存(100K x 4GB = 400GB)。从 MySQL 8.0.30 开始,默认堆段大小从每个表的 4MB 减少到默认的 64KB,从而减少了必须从根堆中为每个加载的表分配的内存量。

从 MySQL 8.0.28-u1 开始,HeatWave 在加载数据时压缩数据,这允许 HeatWave 节点以较小的性能成本存储更多数据。如果您不想在 HeatWave 中加载数据时压缩数据,则必须在加载数据之前禁用压缩。有关说明,请参阅 第 2.2.6 节,“数据压缩”

笔记

在 8.0.31 版之前,不允许对 HeatWave 中加载的表执行 DDL 操作。SECONDARY_ENGINE在这些版本中,要更改表的定义,您必须在执行 DDL 操作之前卸载表并删除属性。请参阅 第 2.4 节,“修改表”

有关相关的最佳实践,请参阅 第 2.8 节“最佳实践”