PostgreSQL + TimescaleDB 数据库语法配置
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"}'
);