将表加载到 HeatWave 后,数据更改会自动从InnoDB
MySQL 数据库系统上的表传播到 HeatWave 集群中的对应表。
MySQL 数据库系统上的DML 操作(INSERT
,
UPDATE
, DELETE
)不等待更改传播到 HeatWave 集群;也就是说,MySQL 数据库系统上的 DML 操作不会因 HeatWave 更改传播而延迟。
MySQL 数据库系统节点上的数据更改在批处理事务中传播到 HeatWave。更改传播按如下方式启动:
每 200 毫秒。
当更改传播缓冲区达到其 64MB 容量时。
当 MySQL 数据库系统上的 DML 操作更新的数据被后续的 HeatWave 查询读取时。
更改传播失败会导致 HeatWave 中的表变得陈旧,并且访问陈旧表的查询不会卸载到 HeatWave 进行处理。
由于代码外错误导致更改传播失败而变得陈旧的表将自动重新加载。当 HeatWave 集群空闲时,会定期检查过时的表。
如果由于某些其他原因导致表变得陈旧而发生更改传播失败,则必须手动卸载并重新加载表以重新启动该表的更改传播。请参阅第 2.5 节,“卸载表”和 第 2.2 节,“加载数据”。
要检查是否全局启用更改传播,请查询
rapid_change_propagation_status
变量:
mysql> SELECT VARIABLE_VALUE FROM performance_schema.global_status
WHERE VARIABLE_NAME = 'rapid_change_propagation_status';
+----------------+
| VARIABLE_VALUE |
+----------------+
| ON |
+----------------+
要检查是否为单个表启用了更改传播,请查询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 AND SCHEMA_NAME LIKE 'tpch';
+---------------+-------------------------------+
| NAME | POOL_TYPE |
+---------------+-------------------------------+
| tpch.orders | RAPID_LOAD_POOL_TRANSACTIONAL |
| tpch.region | RAPID_LOAD_POOL_TRANSACTIONAL |
| tpch.lineitem | RAPID_LOAD_POOL_TRANSACTIONAL |
| tpch.supplier | RAPID_LOAD_POOL_TRANSACTIONAL |
| tpch.partsupp | RAPID_LOAD_POOL_TRANSACTIONAL |
| tpch.part | RAPID_LOAD_POOL_TRANSACTIONAL |
| tpch.customer | RAPID_LOAD_POOL_TRANSACTIONAL |
+---------------+-------------------------------+
更改传播不支持由外键约束触发的级联更改。
将更改传播到包含列的表时,不支持
( )time_zone
以外
的设置。在这种情况下传播更改会导致不正确的数据存储在
列中,从而导致不正确的查询结果。
SYSTEM
+00:00
TIMESTAMP
TIMESTAMP