PostgreSQL + TimescaleDB 数据库语法配置

发布于:2025-08-18 ⋅ 阅读:(15) ⋅ 点赞:(0)

1.启用必要扩展

需要为postgresql进行扩展安装(确保已安装该程序)

启用扩展(在已安装的前提下)

CREATE EXTENSION IF NOT EXISTS timescaledb;

查询安装版本(安装成功会有对应的信息)

SELECT * FROM pg_extension

2.超表语法

设置普通表为超表
SELECT create_hypertable(
    't_session_dialog_reply', --你的表名
    'create_time', --你的字段
    chunk_time_interval => INTERVAL '3 day' --分块时间不填则默认7天
);
查询数据库中超表的配置分块天数以及字段
SELECT 
  hypertable_name,
  dimension_number,
  column_name,
  time_interval AS chunk_interval_microseconds,
  time_interval / 86400000000 AS chunk_interval_days
FROM timescaledb_information.dimensions
修改超表分块天数
SELECT set_chunk_time_interval('t_session_dialog_reply', INTERVAL '7 days');

3.压缩实例

启用压缩(已压缩的数据无法被修改)
--t_session_dialog_reply  你的表名
ALTER TABLE t_session_dialog_reply SET (
  timescaledb.compress,
  timescaledb.compress_segmentby = 'id',  -- 按ID分组 需要设置成你自己的表的字段
  timescaledb.compress_orderby = 'create_time DESC' -- 按时间倒序排列 需要设置成你自己的表的字段
);
设置自动压缩
-- 设置7天后自动压缩
SELECT add_compression_policy('t_identify_frame', INTERVAL '7 days');
查看所有压缩策略 config是压缩配置 compress_after是压缩天数
SELECT * 
FROM timescaledb_information.jobs 
WHERE proc_name = 'policy_compression';

更改策略(假设 job_id 是 1000)通过查询压缩策略获取job_id以及config 注意hypertable_id不能改变且最好是整个copy仅改变compress_after后续的天数 通过alter_job
SELECT alter_job(
    job_id => 1000, 
    config => '{"hypertable_id": 8, "compress_after": "30 days"}'
);


网站公告

今日签到

点亮在社区的每一天
去签到