timescaledb
时序数据库扩展插件
仓库
timescale/timescaledb
https://github.com/timescale/timescaledb
源码
timescaledb-2.25.2.tar.gz
timescaledb-2.25.2.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
timescaledb | 2.25.2 | 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.25.2 | 1817161514 | timescaledb | - |
| RPM | PIGSTY | 2.25.2 | 1817161514 | timescaledb-tsl_$v | - |
| DEB | PIGSTY | 2.25.2 | 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;
用法
创建一张表并将其转换为超表(hypertable)
DROP TABLE IF EXISTS ts_test;
CREATE TABLE ts_test
(
ts TIMESTAMPTZ NOT NULL,
id BIGINT,
v INTEGER -- 载荷数据
);
SELECT create_hypertable('ts_test', by_range('ts'));
INSERT INTO ts_test
SELECT now() + (i || ' seconds')::INTERVAL, i, i % 100
FROM generate_series(1, 1000000) i;
连续聚合示例:
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('SELECT 1','1h', initial_start => now()::timestamptz);
压缩示例:
ALTER TABLE ts_test SET (
timescaledb.compress,
timescaledb.compress_segmentby = 'id',
timescaledb.compress_orderby = 'ts'
);
-- 添加压缩策略,自动压缩超过 1 天的数据块
SELECT add_compression_policy('ts_test', INTERVAL '1 day');