MySQL HeatWave 用户指南  / 第 2 章热浪  / 2.2 加载数据  /  2.2.7 变化传播

2.2.7 变化传播

将表加载到 HeatWave 后,数据更改会自动从InnoDBMySQL 数据库系统上的表传播到 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_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 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:00TIMESTAMPTIMESTAMP