连续聚合通常用于下采样历史数据。如果数据仅用于分析查询且从不修改,则可以压缩聚合以节省存储空间。

警告

2.11.0 版本之前,您无法刷新连续聚合的压缩区域。为了避免压缩和刷新之间的冲突,请确保将 compress_after 设置为大于 刷新策略start_offset 的间隔。

连续聚合的压缩工作方式类似于 超表的压缩。启用压缩且未提供其他选项时,segment_by 值将自动设置为连续聚合的 group by 列,并且 time_bucket 列将在压缩配置中用作 order_by 列。

您可以通过在更改视图时设置 compress 参数来启用和禁用连续聚合的压缩。

  1. 对于现有的连续聚合,在 psql 提示符下,启用压缩

    ALTER MATERIALIZED VIEW cagg_name set (timescaledb.compress = true);
  2. 禁用压缩

    ALTER MATERIALIZED VIEW cagg_name set (timescaledb.compress = false);

如果连续聚合有关联的压缩块,则禁用连续聚合的压缩将失败。在这种情况下,您需要解压缩块,然后在禁用压缩之前删除连续聚合上的任何压缩策略。有关更多详细信息,请参阅解压缩块部分

SELECT decompress_chunk(c, true) FROM show_chunks('cagg_name') c;

在连续聚合上设置压缩策略之前,您应该设置刷新策略。应设置压缩策略间隔,以使主动刷新的区域不被压缩。这是为了防止刷新策略失败。例如,考虑如下刷新策略

SELECT add_continuous_aggregate_policy('cagg_name',
start_offset => INTERVAL '30 days',
end_offset => INTERVAL '1 day',
schedule_interval => INTERVAL '1 hour');

对于这种刷新策略,压缩策略需要 compress_after 参数大于连续聚合策略的 start_offset 参数

SELECT add_compression_policy('cagg_name', compress_after=>'45 days'::interval);

关键词

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