允许您设置策略,系统会根据该策略在后台自动压缩数据块,在数据块达到给定期限后。

压缩策略只能在已经启用压缩的超表或连续聚合上创建。要为超表设置 timescaledb.compress 和其他配置参数,请使用 ALTER TABLE 命令。要在连续聚合上启用压缩,请使用 ALTER MATERIALIZED VIEW 命令。要查看您设置的策略或已存在的策略,请参阅信息视图

名称类型描述
hypertableREGCLASS超表或连续聚合的名称
compress_afterINTERVAL 或 INTEGER策略作业压缩数据块的期限。compress_after 是相对于当前时间计算的,因此包含早于 now - {compress_after}::interval 的数据的数据块将被压缩。此参数与 compress_created_before 互斥。
compress_created_beforeINTERVAL创建时间早于此截止点的数据块将被压缩。截止点计算为 now() - compress_created_before。默认为 NULL。尚不支持连续聚合。此参数与 compress_after 互斥。

compress_after 参数应根据超表或连续聚合的时间列类型以不同的方式指定

  • 对于具有 TIMESTAMP、TIMESTAMPTZ 和 DATE 时间列的超表:时间间隔应为 INTERVAL 类型。
  • 对于具有基于整数的时间戳的超表:时间间隔应为整数类型(这需要设置 integer_now_func)。
名称类型描述
schedule_intervalINTERVAL上次执行完成时间和下次开始时间之间的间隔。对于 chunk_time_interval >= 1 天的超表,默认为 12 小时;对于所有其他超表,默认为 chunk_time_interval / 2
initial_startTIMESTAMPTZ策略首次运行的时间。默认为 NULL。如果省略,则计划间隔是从上次执行完成时间到下次开始时间的间隔。如果提供,它将作为计算 next_start 的原点
timezoneTEXT有效的时区。如果也指定了 initial_start,则压缩策略的后续执行将与其初始启动对齐。但是,夏令时 (DST) 更改可能会移动此对齐。如果这是一个您想要缓解的问题,请设置为有效的时区。如果省略,则执行 UTC 分桶。默认为 NULL
if_not_existsBOOLEAN设置为 true 会导致命令失败并发出警告,而不是在超表上已存在压缩策略时报错。默认为 false。

添加一个策略以压缩 cpu 超表上超过 60 天的数据块。

SELECT add_compression_policy('cpu', compress_after => INTERVAL '60d');

添加一个策略以压缩在 'cpu' 超表上 3 个月前创建的数据块。

SELECT add_compression_policy('cpu', compress_created_before => INTERVAL '3 months');

请注意,当使用 compress_after 时,则使用分区时间列中存在的时间数据范围来选择目标数据块。而当使用 compress_created_before 时,则选择 3 个月前创建的数据块。

为具有基于整数的时间列的超表添加压缩数据块策略

SELECT add_compression_policy('table_with_bigint_time', BIGINT '600000');

为名为 cpu_weekly 的连续聚合添加一个策略,以压缩超过八周的数据块

SELECT add_compression_policy('cpu_weekly', INTERVAL '8 weeks');

关键词

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