TimescaleDB

历史数据的折线图展示,经常需要能任意指定时间间隔。

这类场景适合使用时序数据库。

PostgreSQL 安装 TimescaleDB 扩展后,time_bucket 函数也可以在普通表中使用:

SELECT time_bucket('5 minutes', time) AS five_min, avg(cpu)
FROM metrics
GROUP BY five_min
ORDER BY five_min DESC LIMIT 10;

配合 DISTINCT ON ,可以取比如分组中最新一条记录。