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"}'
);