Timescale 原生支持向超表添加数据保留策略。 如果您想向所有超表添加通用数据保留策略,您可以编写用户自定义操作。
创建一个过程,如果数据块的创建时间早于
drop_after
参数,则从任何超表中删除这些数据块。 为了获取所有超表,查询timescaledb_information.hypertables
表。CREATE OR REPLACE PROCEDURE generic_retention (job_id int, config jsonb)LANGUAGE PLPGSQLAS $$DECLAREdrop_after interval;BEGINSELECT jsonb_object_field_text (config, 'drop_after')::intervalINTO STRICT drop_after;IF drop_after IS NULL THENRAISE EXCEPTION 'Config must have drop_after';END IF;PERFORM drop_chunks(format('%I.%I', hypertable_schema, hypertable_name),older_than => drop_after) FROM timescaledb_information.hypertables;END$$;注册作业以每天运行。在
config
中,将drop_after
设置为 12 个月,以删除包含超过 12 个月的数据的数据块。SELECT add_job('generic_retention','1d', config => '{"drop_after":"12 month"}');
注意
您可以通过向您的过程添加过滤器来进一步优化此策略。 例如,向 PERFORM
查询添加 WHERE
子句,以仅从特定的超表中删除数据块。
关键词
在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页。