热浪用户指南/加载数据

第四章数据加载

介绍如何在HeatWave集群中加载数据。在尝试加载数据之前,请确保:

否则,不允许表加载操作。

有关相关的最佳实践,请参见第八章,最佳实践

要将表加载到HeatWave集群中,请指定SECONDARY_LOAD选择在一个ALTER TABLE声明。

mysql> ALTER TABLE orders SECONDARY_LOAD;

加载表所需的时间取决于数据大小。您可以通过发出以下查询来监视负载进度,该查询返回指示负载进度的百分比值。

mysql> SELECT VARIABLE_VALUE FROM performance_schema。WHERE变量名= 'rapid_load_progress';+----------------+ | VARIABLE_VALUE  | +----------------+ | 100.000000  | +----------------+
请注意

如果需要,可以使用ctrl - c

属性来验证是否加载了表LOAD_STATUSHeatWave Performance Schema表中的数据。例如:

mysql >使用performance_schema;mysql> SELECT NAME, LOAD_STATUS FROM rpd_tables,rpd_table_id WHERE rpd_tables。ID = rpd_table_id.ID;+------------------------------+---------------------+ | 名字| LOAD_STATUS  | +------------------------------+---------------------+ | tpch。supplier | AVAIL_RPDGSTABSTATE | | tpch。partsupp | AVAIL_RPDGSTABSTATE | | tpch。订单| AVAIL_RPDGSTABSTATE | | tpch。lineitem | AVAIL_RPDGSTABSTATE | | tpch。客户| AVAIL_RPDGSTABSTATE | | tpch。nation | AVAIL_RPDGSTABSTATE | | tpch。region | AVAIL_RPDGSTABSTATE | | tpch. region | AVAIL_RPDGSTABSTATE | | tpch。部分| AVAIL_RPDGSTABSTATE  | +------------------------------+---------------------+

AVAIL_RPDGSTABSTATE“Status”表示表已加载。有关加载状态的更多信息,请参见第10.10.4节,“The rpd_tables Table”

当将一个表加载到HeatWave集群中时,将从中读取数据InnoDB使用批处理的多线程读取。然后数据被转换成柱状格式,通过网络发送,并分布在HeatWave节点中。数据通过水平切片的方式分布在HeatWave节点上。除非定义了数据放置键,否则数据是按主键进行分区的。看到第3.4节,“定义数据放置键”

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

加载表之后,MySQL DB System节点上对表数据的更改将自动传播到HeatWave集群。有关更多信息,请参见改变传播

SECONDARY_LOADClause具有以下属性:

  • 它被认为是一个本地操作,因此从二进制日志中省略。

  • 属性读取数据读过承诺隔离级别。

以下限制适用于加载表:

  • 如果主键不存在,则不允许加载表。不支持用列前缀定义的主键列。

  • HeatWave每个表最多支持470列。

  • 如果主键包含多个列,或者主键列不是整数列。在负载、更改传播和查询处理期间对MySQL性能的影响取决于一些因素,如数据属性、可用资源(计算、内存和网络)和MySQL DB系统上的事务处理速率。

  • 不允许对加载到HeatWave集群中的表进行DDL操作。若要更改表的定义,必须卸载表并删除SECONDARY_ENGINE属性,然后执行DDL操作。看到第9章,故障排除

改变传播

在将表加载到HeatWave集群之后,数据更改将自动从其中传播InnoDB将MySQL数据库系统中的表拷贝到HeatWave集群中的对应表中。

更改在MySQL DB System节点上累积,并在批处理事务中传播到HeatWave集群。更改传播每200毫秒触发一次,或者当挂起的更改达到64 mb时触发。属性应用更改读过承诺隔离级别。

更改传播失败可能导致HeatWave集群中的表数据失效。访问陈旧表数据的查询不会被卸载到HeatWave集群进行处理。

若要检查更改传播是否全局启用,请查询rapid_change_propagation_status变量:

mysql> SELECT VARIABLE_VALUE FROM performance_schema。全局状态:变量名= 'rapid_change_propagation_status';+----------------+ | VARIABLE_VALUE  | +----------------+ | 在  | +----------------+

若要检查是否为各个表启用了更改传播,请查询POOL_TYPEHeatWave Performance Schema表中的数据。RAPID_LOAD_POOL_TRANSACTIONAL指示已为表启用更改传播。RAPID_LOAD_POOL_SNAPSHOT指示更改传播被禁用。

mysql> SELECT NAME, POOL_TYPE FROM rpd_tables,rpd_table_id WHERE rpd_tables。ID = rpd_table_id。ID和SCHEMA_NAME LIKE 'tpch';+---------------+-------------------------------+ | 名字| POOL_TYPE  | +---------------+-------------------------------+ | tpch。订单| RAPID_LOAD_POOL_TRANSACTIONAL | | tpch。region | RAPID_LOAD_POOL_TRANSACTIONAL | | tpch。lineitem | RAPID_LOAD_POOL_TRANSACTIONAL | | tpch。供应商| RAPID_LOAD_POOL_TRANSACTIONAL | | tpch。partsupp | RAPID_LOAD_POOL_TRANSACTIONAL | | tpch。part | RAPID_LOAD_POOL_TRANSACTIONAL | | tpch。客户| RAPID_LOAD_POOL_TRANSACTIONAL  | +---------------+-------------------------------+

如果禁用了特定表的更改传播,则必须卸载并重新加载该表。看到第五章,卸载表,第四章,加载数据

更改传播不支持由外键约束触发的级联更改。

如果字典编码的字符串列更新导致字典溢出(如果新惟一值的数量超过字典容量,就会发生溢出),则会中止更改传播。