TimescaleDB 2.22.0 发布,基于 PostgreSQL 的时序数据库
TimescaleDB 是一个开源数据库,旨在使 SQL 可扩展到时间序列数据,基于 PostgreSQL 构建的,并打包为 PostgreSQL 扩展程序,提供跨时间和空间的自动分区,以及完整的 SQL 支持。
TimescaleDB 2.22.0 现已发布,此版本包含自 2.21.3 版本以来的性能改进和错误修复。一些更新亮点内容如下:
- 现在可以通过
ALTER TABLE显式配置压缩超表上的稀疏索引,而不再仅仅依赖于内部启发式方法。用户可以在多个列上定义索引,以提高其特定工作负载的查询性能。 - [Tech Preview] 连续聚合现在支持
timescaledb.invalidate_using选项,允许通过超表上的触发器或使用逻辑解码直接从 WAL 收集失效信息。如果未指定,聚合将继承超表的方法。 - 现已支持 UUIDv7 压缩和向量化处理。压缩算法利用时间戳部分进行 delta-delta 压缩,同时单独存储随机部分。向量化的等式/不等式过滤器支持批量解压缩,可将查询性能提升约 2 倍。该功能默认处于禁用状态 (
timescaledb.enable_uuid_compression),以简化降级体验,并将在下一个次要版本中开箱即用。 - 现在,Hypertables 可以按 UUIDv7 列进行分区,并利用其嵌入的时间戳进行基于时间的分块。还添加了实用函数来简化 UUIDv7 的使用,例如生成值或提取时间戳 - 例如,
uuid_timestamp()从 UUIDv7 返回 PostgreSQL 时间戳。 - SkipScan 现在支持 not-null 模式下的多列索引,从而提高了跨多个键的 distinct 和 ordered 查询的性能。
删除 hypercore table 访问方法
决定在 2.21.0 版本中弃用 hypercore table access method (TAM)。该方法属于实验性功能,未能实现预期的性能提升,故随此版本移除。如果仍在使用 TAM,则无法升级到 2.22.0 及更高版本。
迁移路径
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://github.com/timescale/timescaledb/releases/tag/2.22.0