timescaledb
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
timescaledb | 2.27.0 | TIME | Timescale | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 1000 | timescaledb | 否 | 是 | 是 | 是 | 是 | 否 | timescaledb_information |
| 相关扩展 | timescaledb_toolkit timeseries pg_cron pg_partman periods temporal_tables emaj pg_task |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 2.27.0 | 1817161514 | timescaledb | - |
| RPM | PIGSTY | 2.27.0 | 1817161514 | timescaledb-tsl_$v | - |
| DEB | PIGSTY | 2.27.0 | 1817161514 | postgresql-$v-timescaledb-tsl | - |
构建
您可以使用 pig build 命令构建 timescaledb 扩展的 RPM / DEB 包:
pig build pkg timescaledb # 构建 RPM / DEB 包
安装
您可以直接安装 timescaledb 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install timescaledb; # 当前活跃 PG 版本安装
pig ext install -y timescaledb -v 18 # PG 18
pig ext install -y timescaledb -v 17 # PG 17
pig ext install -y timescaledb -v 16 # PG 16
pig ext install -y timescaledb -v 15 # PG 15
dnf install -y timescaledb-tsl_18 # PG 18
dnf install -y timescaledb-tsl_17 # PG 17
dnf install -y timescaledb-tsl_16 # PG 16
dnf install -y timescaledb-tsl_15 # PG 15
apt install -y postgresql-18-timescaledb-tsl # PG 18
apt install -y postgresql-17-timescaledb-tsl # PG 17
apt install -y postgresql-16-timescaledb-tsl # PG 16
apt install -y postgresql-15-timescaledb-tsl # PG 15
预加载配置:
shared_preload_libraries = 'timescaledb';
创建扩展:
CREATE EXTENSION timescaledb;
用法
来源:README, TimescaleDB 2.27.0 release, CREATE TABLE API, create_hypertable() API, continuous aggregate API, add_columnstore_policy() API, GUCs
timescaledb 是用于 time-series 和 event analytics 的 PostgreSQL 扩展。当前文档强调 CREATE TABLE ... WITH (tsdb.hypertable)、continuous aggregates、automation jobs,以及将 chunks 移入 columnstore。
Hypertables
CREATE EXTENSION timescaledb;
CREATE TABLE ts_test (
ts timestamptz NOT NULL,
id bigint,
v integer
) WITH (
tsdb.hypertable,
tsdb.orderby = 'ts DESC'
);
转换已有 PostgreSQL 表时,使用 generalized hypertable API:
CREATE TABLE ts_existing (
ts timestamptz NOT NULL,
id bigint,
v integer
);
SELECT create_hypertable('ts_existing', by_range('ts'));
CREATE TABLE ... WITH (tsdb.hypertable)自 TimescaleDB 2.20.0 起有文档记录,是新建 hypertable 的 best-practice 路径。- TimescaleDB 2.23.0 及之后版本中,如果只有一个候选项,第一个
TIMESTAMP或TIMESTAMPTZ列会自动选为 partition column;多个候选项会使选择变得 ambiguous。 create_hypertable()仍可用于转换已有表。
Continuous aggregates 与 jobs
CREATE MATERIALIZED VIEW ts_hourly
WITH (timescaledb.continuous) AS
SELECT time_bucket('1 hour', ts) AS bucket,
count(*) AS cnt,
avg(v) AS avg_v
FROM ts_test
GROUP BY bucket;
SELECT add_continuous_aggregate_policy(
'ts_hourly',
start_offset => INTERVAL '3 hours',
end_offset => INTERVAL '1 hour',
schedule_interval => INTERVAL '1 hour'
);
SELECT add_job('user_defined_action', '1h');
- Continuous aggregates 要求在 hypertable 的 time dimension 上使用
time_bucket(...)。 - Continuous aggregate 的
WITH子句支持timescaledb.materialized_only;当前 API 默认值是TRUE,因此除非另行配置,否则不会启用 real-time aggregation。
Columnstore
CREATE TABLE crypto_ticks (
"time" timestamptz,
symbol text,
price double precision,
day_volume numeric
) WITH (
tsdb.hypertable,
tsdb.segmentby = 'symbol',
tsdb.orderby = 'time DESC'
);
CALL add_columnstore_policy('crypto_ticks', after => INTERVAL '60 days');
CREATE TABLE ... WITH (tsdb.hypertable)默认启用 columnstore,除非设置tsdb.columnstore = false。add_columnstore_policy()替代较旧的add_compression_policy()API,并要求after或created_before二选一,不能同时使用。- Bloom filters 对新的 columnstore chunks 默认启用。已有 chunks 需要 recompression 后才会拥有 bloom indexes。
相关 GUC
SET timescaledb.enable_direct_compress_insert = on;
SET timescaledb.enable_cagg_rewrites = on;
SET timescaledb.enable_columnar_scan_filter_pushdown = on;
timescaledb.enable_direct_compress_insert 和 timescaledb.enable_direct_compress_copy 会启用 ingestion 期间 tech-preview direct compression。TimescaleDB 2.27.0 增加 timescaledb.enable_cagg_rewrites 和 timescaledb.cagg_rewrites_debug_info,并记录 timescaledb.enable_columnar_scan_filter_pushdown 默认启用。
注意事项
- 本项目 CSV 跟踪 TimescaleDB
2.27.0,覆盖 PostgreSQL 15-18。 - TimescaleDB 2.27.0 增加 Hypercore columnstore 性能工作:vectorized filters、用于
UPDATE/DELETEequality predicates 的 bloom-filter pruning,以及用于UPSERT的 bloom-filter pruning。 - 2.27.0 release notes 为受影响的 compressed
int2bloom sparse indexes 和 v2.26 生成的 composite bloom metadata 列出 backward-incompatible upgrade caveats。 - 2.27.0 release notes 宣布计划在 2026 年 6 月的 TimescaleDB release 后停止支持 PostgreSQL 15。