介绍如何在HeatWave集群中加载数据。在尝试加载数据之前,请确保:
将数据加载到MySQL数据库系统中。从MySQL数据库系统中加载数据到HeatWave集群。有关将数据导入MySQL数据库系统的信息,请参见MySQL数据库服务用户指南.
在要加载的每个表上定义一个主键。
排除不支持数据类型的列。看到第3.2节,“不包括表列”.
定义
快速
作为第二引擎。看到第3.5节,“二次发动机的定义”.
否则,不允许表加载操作。
有关相关的最佳实践,请参见第八章,最佳实践.
要将表加载到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_STATUS
HeatWave 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_LOAD
Clause具有以下属性:
它被认为是一个本地操作,因此从二进制日志中省略。
属性读取数据
读过承诺
隔离级别。
以下限制适用于加载表:
如果主键不存在,则不允许加载表。不支持用列前缀定义的主键列。
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_TYPE
HeatWave 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 | +---------------+-------------------------------+
如果禁用了特定表的更改传播,则必须卸载并重新加载该表。看到第五章,卸载表,第四章,加载数据.
更改传播不支持由外键约束触发的级联更改。
如果字典编码的字符串列更新导致字典溢出(如果新惟一值的数量超过字典容量,就会发生溢出),则会中止更改传播。