0Pricing
SQL Academy · 课时

连续聚合

使用 CONTINUOUS AGGREGATE 物化视图预聚合时间序列数据,并进行增量刷新

连续聚合 是 CoddyKit 上的免费 SQL Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 SQL Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 SQL Academy 课程共包含 4 节课。

什么是连续聚合

连续聚合是在超表上预先计算并进行增量刷新的聚合,类似于一种能够随着新数据到达而智能更新的物化视图。

创建连续聚合

按小时计算设备平均值:

CREATE MATERIALIZED VIEW metrics_hourly
WITH (timescaledb.continuous) AS
SELECT device_id,
       time_bucket('1 hour', ts) AS hour,
       AVG(value) AS avg_value,
       COUNT(*)   AS samples
FROM metrics
GROUP BY device_id, hour;

刷新策略

TimescaleDB 会自动刷新:

SELECT add_continuous_aggregate_policy('metrics_hourly',
  start_offset => INTERVAL '1 day',
  end_offset   => INTERVAL '1 hour',
  schedule_interval => INTERVAL '15 minutes');
-- Every 15 minutes, refresh the window from 1 day ago to 1 hour ago.

查询

直接执行 SELECT 即可。TimescaleDB 会将物化数据与最近尚未物化时段的原始数据合并:

SELECT * FROM metrics_hourly
WHERE device_id = 42
  AND hour >= NOW() - INTERVAL '7 days'
ORDER BY hour;

实时聚合

默认情况下,连续聚合会显示预先计算的数据 PLUS 尚未物化尾部的原始数据。您始终可以看到最新值,只是需要承担实时计算尾部数据的成本。

仅物化模式

如果要构建完全预先计算的仪表板(不进行实时计算),请关闭实时聚合:

ALTER MATERIALIZED VIEW metrics_hourly
  SET (timescaledb.materialized_only = true);

多层聚合

构建小时级 → 日级 → 月级聚合:

-- daily aggregate from the hourly cagg
CREATE MATERIALIZED VIEW metrics_daily
WITH (timescaledb.continuous) AS
SELECT device_id, time_bucket('1 day', hour) AS day,
       AVG(avg_value) AS avg_value
FROM metrics_hourly
GROUP BY device_id, day;

压缩超表不会阻塞聚合

您可以压缩底层超表,连续聚合仍会继续工作。

连续聚合优于物化视图的场景

  • 时间序列数据:内置时间语义
  • 增量刷新——无需重新扫描整个历史数据
  • 实时尾部数据整合
  • 多层汇总

兼容性

连续聚合可以用于 TimescaleDB 超表。对于非 TS PostgreSQL,您必须自行实现物化视图和刷新逻辑。

回填

如果更改了聚合定义,请手动刷新历史数据:

CALL refresh_continuous_aggregate('metrics_hourly',
  NULL, NOW());
-- Recompute from the beginning of time.

总结

连续聚合就是时间序列物化视图。

  • 使用 WITH (timescaledb.continuous) 定义
  • 自动刷新策略
  • 实时数据与物化数据混合
  • 在小时级聚合之上叠加日级或周级聚合

快速检查

与 REFRESH MATERIALIZED VIEW 相比,TimescaleDB 连续聚合的刷新为什么更高效?

常见问题解答

「连续聚合」课时是免费的吗?

是的 — 「连续聚合」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 SQL Academy 课程的其余内容,请升级到 CoddyKit PRO。 SQL Academy 课程共包含 4 节课。

「连续聚合」这节课中我会学到什么?

使用 CONTINUOUS AGGREGATE 物化视图预聚合时间序列数据,并进行增量刷新 你通过在浏览器中直接运行的动手代码来练习 SQL Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 SQL Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 SQL Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「连续聚合」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 SQL Academy 课中编写并运行代码吗?

能。每节 SQL Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. TimescaleDB 超表
  2. 连续聚合
  3. 压缩与保留策略
  4. 时间序列索引选择
← 返回 SQL Academy