TimescaleDB 连续聚合与数据保留策略初始化与超表CREATE EXTENSION IF NOT EXISTS timescaledb; CREATE TABLE metrics (time TIMESTAMPTZ NOT NULL, key TEXT, value DOUBLE PRECISION); SELECT create_hypertable('metrics', 'time'); 连续聚合CREATE MATERIALIZED VIEW metrics_5m WITH (timescaledb.continuous) AS SELECT time_bucket('5 minutes', time) AS bucket, key, avg(value) AS avg_value FROM metrics GROUP BY bucket, key WITH NO DATA; SELECT add_continuous_aggregate_policy('metrics_5m', start_offset => INTERVAL '1 day', end_offset => INTERVAL '5 minutes', schedule_interval => INTERVAL '5 minutes'); 保留与压缩SELECT add_retention_policy('metrics', INTERVAL '90 days'); ALTER TABLE metrics SET (timescaledb.compress, timescaledb.compress_segmentby = 'key'); SELECT add_compression_policy('metrics', INTERVAL '7 days'); 总结连续聚合与保留/压缩策略可显著降低存储与查询成本,同时保持近端数据的高可用性。

发表评论 取消回复