初始化与创建 hypertable:CREATE EXTENSION IF NOT EXISTS timescaledb;
CREATE TABLE metrics (
ts timestamptz NOT NULL,
host text NOT NULL,
cpu double precision NOT NULL
);
SELECT create_hypertable('metrics', 'ts', chunk_time_interval => interval '1 day');
创建连续聚合视图:CREATE MATERIALIZED VIEW metrics_cpu_hourly
WITH (timescaledb.continuous) AS
SELECT time_bucket('1 hour', ts) AS bucket,
host,
avg(cpu) AS avg_cpu
FROM metrics
GROUP BY bucket, host;
刷新策略(近 7 天、每小时调度):SELECT add_continuous_aggregate_policy('metrics_cpu_hourly',
start_offset => interval '7 days',
end_offset => interval '1 hour',
schedule_interval => interval '1 hour');
保留与压缩策略:SELECT add_retention_policy('metrics', INTERVAL '30 days');
ALTER TABLE metrics SET (
timescaledb.compress,
timescaledb.compress_segmentby = 'host'
);
SELECT add_compression_policy('metrics', INTERVAL '7 days');

发表评论 取消回复