
TimescaleDB 是一款开源的时序数据库,构建于 PostgreSQL 之上,以扩展插件的形式集成,致力于让 SQL 在处理时间序列数据时具备更强的可扩展性。它支持基于时间与空间维度的自动分区,并完整兼容 SQL 查询能力。
最新发布的 TimescaleDB 2.22.0 版本带来了自 2.21.3 以来的一系列性能优化与缺陷修复,主要更新包括:
现在可以通过
ALTER TABLE
命令对启用了压缩的超表(hypertable)上的稀疏索引进行显式配置,不再依赖系统内部的自动判断机制。用户可根据实际查询负载,在多个字段上创建索引以提升性能。[技术预览] 连续聚合功能新增
timescaledb.invalidate_using
配置选项,支持通过超表上的触发器或利用逻辑解码从 WAL 直接捕获失效数据。若未手动设置,系统将沿用超表的失效策略。已实现对 UUIDv7 的压缩和向量化处理支持。压缩机制会提取 UUIDv7 中的时间戳部分,采用 delta-delta 编码方式压缩,随机部分则单独存储。同时,向量化的等值/范围过滤器支持批量解压,使相关查询性能提升约 2 倍。该功能默认关闭(通过
timescaledb.enable_uuid_compression
控制),以便于版本回退,预计在下一个次版本中默认启用。超表(Hypertables)现在可基于 UUIDv7 列进行分区,并利用其内嵌的时间信息实现时间分片。此外,新增多个辅助函数以简化 UUIDv7 的使用,例如生成 UUIDv7 值或提取其中的时间戳,如
uuid_timestamp()
函数可从 UUIDv7 中解析出 PostgreSQL 时间戳格式。SkipScan 查询优化现已支持多列索引中的非空(not-null)模式,显著提升涉及多个键的去重(distinct)和有序查询效率。
移除 hypercore 表访问方法
此前在 2.21.0 版本中标记为废弃的 hypercore 表访问方法(TAM)本次正式移除。该功能属于实验性质,实际表现未达预期性能目标。因此,升级至 2.22.0 或更高版本前,若仍在使用 TAM,则必须先迁移。
迁移脚本如下:
do $$declare relid regclass;begin for relid in select cl.oid from pg_class cl join pg_am am on (am.oid = cl.relam) where am.amname = 'hypercore' loop raise notice 'converting % to heap', relid::regclass; execute format('alter table %s set access method heap', relid); end loop;end$$;
查看更多更新内容,请访问:https://www.php.cn/link/6abdec2606bd68762a72dc1a4038d1ff
源码下载地址:点击获取
以上就是TimescaleDB 2.22.0 发布,基于 PostgreSQL 的时序数据库的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/125514.html
微信扫一扫
支付宝扫一扫