在 Timescale 2.7 及更高版本中,连续聚合使用一种新格式,该格式提高了性能并使其与更多 SQL 查询兼容。在旧版本的 TimescaleDB 中创建的连续聚合,或在新版本中使用选项 timescaledb.finalized 设置为 false 创建的连续聚合,使用旧格式。

要将连续聚合从旧格式迁移到新格式,您可以使用此过程。它会自动复制您的数据和策略。迁移正在进行时,您可以继续使用连续聚合。

连接到您的数据库并运行

CALL cagg_migrate('<CONTINUOUS_AGGREGATE_NAME>');
警告

版本 2.8.0 中的 cagg_migrate() 存在已知问题。在使用它之前,请升级到版本 2.8.1 或更高版本。

迁移过程提供两个布尔配置参数:overridedrop_old。默认情况下,新连续聚合的名称是旧连续聚合的名称,并带有后缀 _new

override 设置为 true 以使用原始名称重命名您的新连续聚合。旧的连续聚合将使用后缀 _old 重命名。

要同时重命名和完全删除旧的连续聚合,请将两个参数都设置为 true。请注意,drop_old 必须与 override 一起使用。

要检查连续聚合迁移的进度,请查询迁移计划表

SELECT * FROM _timescaledb_catalog.continuous_agg_migrate_plan_step;

使用 cagg_migrate 将连续聚合从旧格式迁移到新格式时,您可能会遇到权限错误。执行迁移的用户必须具有以下权限

  • 对表 _timescale_catalog.continuous_agg_migrate_plan_timescale_catalog.continuous_agg_migrate_plan_step 的 Select、insert 和 update 权限
  • 对序列 _timescaledb_catalog.continuous_agg_migrate_plan_step_step_id_seq 的 Usage 权限

要解决此问题,请切换到有权授予权限的用户,并将以下权限授予执行迁移的用户

GRANT SELECT, INSERT, UPDATE ON TABLE _timescaledb_catalog.continuous_agg_migrate_plan TO <USER>;
GRANT SELECT, INSERT, UPDATE ON TABLE _timescaledb_catalog.continuous_agg_migrate_plan_step TO <USER>;
GRANT USAGE ON SEQUENCE _timescaledb_catalog.continuous_agg_migrate_plan_step_step_id_seq TO <USER>;

关键词

在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页