方法一 步骤一:创建超表(分区字段time字段是时间格式 类型(TIMESTAMP, TIMESTAMPTZ,DATE)) SELECT create_hypertable('test', 'time',chunk_time_interval => 5000000); 注 :① 按时间分区,时间字段要设为主键(对于时间不重复的情况下) ② chunk_time_interval => 5000000(分区时间段,单位为纳秒) 步骤二: 创建数据保留策略(默认一天执行一次该策略) SELECT add_retention_policy('test', INTERVAL '1 minutes'); 该语句表示只保留1分钟的数据 方法二: 步骤一:创建超表(分区字段id是Integer 类型(SMALLINT, INT, BIGINT)) SELECT create_hypertable('test', 'id',chunk_time_interval => 5000000); 注 :① 按数量分区,id字段要设为主键() ② chunk_time_interval => 5000000(以500万数据为一个分区) 步骤二: 创建数据保留策略(默认一天执行一次该策略) SELECT add_retention_policy('test',BIGINT'60000000'); 该语句表示只保留1分钟的数据 必须运行如下语句: CREATE OR REPLACE FUNCTION unix_now() returns INTEGER LANGUAGE SQL STABLE as $$ SELECT extract(epoch from now())::INTEGER $$; SELECT set_integer_now_func('test', 'unix_now'); 其中 INERGER 要和id字段的类型相同
若要重建策略,先删除原来的策略 SELECT remove_retention_policy('test'); 查看策略任务详细信息 select * from timescaledb_information.jobs 查看策略任务执行情况 SELECT * FROM timescaledb_information.job_stats 修改策略执行时间 SELECT alter_job(1015, schedule_interval => INTERVAL '6 minutes'); 注:1015是策略任务信息中的 job_id,schedule_interval 表示任务执行周期 其他:开启dbug调试,并查看任务运行情况 SET client_min_messages TO DEBUG1; CALL run_job(1015);