timescaledb
时序数据库扩展插件
仓库
timescale/timescaledb
https://github.com/timescale/timescaledb
源码
timescaledb-2.29.1.tar.gz
timescaledb-2.29.1.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
timescaledb | 2.29.1 | TIME | Timescale | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 1000 | timescaledb | 否 | 是 | 是 | 是 | 是 | 否 | timescaledb_information |
| 相关扩展 | timescaledb_toolkit timeseries pg_stl pg_partman pg_ttl_index citus pg_cron pg_ivm pg_incremental pg_trickle |
|---|
TimescaleDB 2.29 removes PostgreSQL 15 support
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 2.29.1 | 1817161514 | timescaledb | - |
| RPM | PIGSTY | 2.29.1 | 1817161514 | timescaledb-tsl_$v | - |
| DEB | PIGSTY | 2.29.1 | 1817161514 | postgresql-$v-timescaledb-tsl | - |
构建
您可以使用 pig build 命令构建 timescaledb 扩展的 RPM / DEB 包:
BASH
安装
您可以直接安装 timescaledb 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
BASH
使用 pig 或者是 apt/yum/dnf 安装扩展:
安装
BASH
pig
BASH
dnf
BASH
apt
BASH
预加载配置:
BASH
创建扩展:
SQL
用法
来源:
- TimescaleDB v2.29.1 README
- TimescaleDB 2.29.0 发行说明
- TimescaleDB 2.29.1 安全与缺陷修复版本
- TimescaleDB v2.29.1 控制文件
- CREATE TABLE API
- create_hypertable() API
- 连续聚合 API
- add_columnstore_policy() API
- TimescaleDB GUC
timescaledb 是用于时序与事件分析的 PostgreSQL 扩展。当前文档重点介绍 CREATE TABLE ... WITH (tsdb.hypertable)、连续聚合、自动化作业,以及将数据块迁移到列存储的用法。
超表
SQL
要转换现有 PostgreSQL 表,请使用通用超表 API:
SQL
CREATE TABLE ... WITH (tsdb.hypertable)自 TimescaleDB 2.20.0 起已有文档说明,是新建超表的最佳实践。- 在 TimescaleDB 2.23.0 及更高版本中,系统会自动选择第一个
TIMESTAMP或TIMESTAMPTZ列作为分区列;如果存在多个候选列而导致选择有歧义,则不会自动选择。 create_hypertable()仍可用于转换现有表。
连续聚合与作业
SQL
- 连续聚合要求在超表的时间维度上使用
time_bucket(...)。 - 连续聚合的
WITH子句支持timescaledb.materialized_only;当前 API 默认值为TRUE,因此除非另行配置,否则不会启用实时聚合。 - TimescaleDB 2.28.0 支持以批次增量执行手工
refresh_continuous_aggregate()调用。可使用buckets_per_batch、max_batches_per_execution和refresh_newest_first将大型手工刷新拆分为较小的工作单元。 - TimescaleDB 2.28.0 还允许通过
ALTER MATERIALIZED VIEW ... ADD COLUMN ... GENERATED ALWAYS AS (...) STORED,向现有连续聚合添加新的生成聚合列;在刷新之前,现有行的该列为NULL。
列存储
SQL
CREATE TABLE ... WITH (tsdb.hypertable)默认启用列存储,除非设置tsdb.columnstore = false。add_columnstore_policy()取代了旧的add_compression_policy()API,且要求在after和created_before中二选一,不能同时指定。- 新建列存储数据块默认启用布隆过滤器。现有数据块必须重新压缩,之后才会拥有布隆索引。
相关 GUC
SQL
timescaledb.enable_direct_compress_insert 和 timescaledb.enable_direct_compress_copy 可在写入期间启用技术预览版的直接压缩。TimescaleDB 2.27.0 新增了 timescaledb.enable_cagg_rewrites 与 timescaledb.cagg_rewrites_debug_info,并说明 timescaledb.enable_columnar_scan_filter_pushdown 默认启用。
版本 2.29.1 与注意事项
- TimescaleDB 2.29 支持 PostgreSQL 16、17 和 18。PostgreSQL 15 支持止于 2.28 系列,因此在将 PG15 数据库迁移到 2.29 之前,应先升级 PostgreSQL。
- 版本 2.29.0 新增
compact_chunk()以及用于合并小型列存储批次的压实策略,并优化了 DML 数据块排除和小LIMIT列存储扫描。在现有工作负载上启用压实策略之前,请先审阅发行说明。 - 2.29 系列新增了
alter_job(..., config_merge => ...)、直接压缩与无序重压缩控制,以及分层连续聚合的并发刷新策略。 - 应使用 2.29.1,而不是 2.29.0。该版本修复了权限检查缺失、畸形压缩数据处理、多个崩溃路径,以及
compact_chunk批次限制验证问题;上游建议所有 2.29.0 安装均进行升级。 - 控制文件将
timescaledb标记为受信任且不可重定位。服务器库仍须根据打包部署配置进行预加载,并重启 PostgreSQL。