TimescaleDB v2.28.0 现已发布,此版本较 2.27.2 版本进行了性能改进和错误修复。
主要功能
- 在压缩数据上,
first()和last()查询速度更快。TimescaleDB 直接从列存储的批处理元数据中提取first(value, time)和last(value, time)聚合数据,完全跳过批处理解压缩。对于时间序列工作负载持续运行的“每个序列的最新读数”查找,这意味着无需更改 SQL 查询即可显著提高最近一次查询的速度。
- 更轻量级、干扰更小的连续聚合刷新。
refresh_continuous_aggregate() 现支持分批增量运行——这与刷新策略现有的行为一致——从而能够将大型手动刷新拆分为多个较小的部分(可通过 buckets_per_batch、max_batches_per_execution 和 refresh_newest_first 进行调整),而非一次性执行一项耗资源的操作。此外,刷新操作在处理失效日志时现在会使用更轻量的锁,因此不再阻塞同一连续聚合上无关的并发操作,从而改善了并发工作负载的行为表现。
- 向量化执行现已涵盖
CASE表达式。TimescaleDB 的列式执行器现在可以直接在压缩数据上计算CASE ... WHEN表达式,因此使用条件逻辑的查询可以保持在快速的向量化路径上执行,而无需回退到速度较慢的逐行解压缩。这可以加速一种常见模式——对压缩历史记录执行条件聚合和计算列——而无需更改查询。
- 无需重建即可向连续聚合添加新的聚合。现在可以执行
ALTER MATERIALIZED VIEW <cagg> ADD COLUMN <name> <type> GENERATED ALWAYS AS (<aggregate>) STORED语句,直接向现有的连续聚合中添加新的计算聚合,无需再为了跟踪一个新指标而删除并重新创建整个聚合。新数据会持续填充该列,使你的汇总能够随着应用程序的演进而不断更新。(现有行初始值为NULL;当你需要历史值时,强制刷新会回填这些行。)
弃用通知:PostgreSQL 15 支持
此版本是 TimescaleDB 最后一个支持 PostgreSQL 15 的小版本。从下一个版本 2.29.0 开始,将正式停止对 PostgreSQL 15 的支持,仅支持 PostgreSQL 16、17 和 18;但是,当前 2.28 版本周期内的所有后续补丁版本将继续完全支持 PostgreSQL 15。建议用户相应地规划 PostgreSQL 升级,以确保平稳过渡。
弃用通知:chunk_constraint Catalog Table
注意,_timescaledb_catalog.chunk_constraint表已被移除,并暂时由一个视图替代。虽然这会对底层对象进行一些更改,但会保持当前的查询行为。然而,此兼容性视图将在未来的版本中完全移除。为确保你的查询在未来保持兼容性,官方建议过渡到由其信息视图提供的稳定契约。
详情可查看:https://github.com/timescale/timescaledb/releases/tag/2.28.0