postgresql数据库 timescaledb 时序库 超级表 块的压缩(compress_chunk()的应用)
文章目录
postgresql数据库 timescaledb 时序库 超级表 块的压缩(compress_chunk()的应用)前言compress_chunk()参数使用步骤1.改为超表2.把超表改为可压缩状态3.压缩解压缩查看压缩后状态压缩前压缩后查询压缩后空间状态压缩后存放的位置前言
在工作中,使用postgresql数据库 尤其是timescaledb 时序库往往会遇到一些问题:
甲方提供的内存不足,只能保留部分数据, 或者储存的的数据量太大
这个 时候我们就需要对数据压缩了
compress_chunk()
在timescaledb 时序库 有专门的函数 apicompress_chunk()用来压缩超级表
参数
compress_chunk函数用于压缩特定的块。当用户想要更多地控制压缩调度时,最常用这个函数来代替add_compression_policy函数
必选参数
可选参数
CREATE OR REPLACE FUNCTION "hrmw"."compress_chunk"("uncompressed_chunk" regclass, "if_not_compressed" bool=false)RETURNS "pg_catalog"."regclass" AS '$libdir/timescaledb-1.7.1', 'ts_compress_chunk'LANGUAGE c VOLATILE STRICTCOST 1
使用步骤
一般在 timescaledb 时序库 大量数据的表都是超级表 ,如果不是的建议你改为超表,要不你用 timescaledb 数据库就没有多少意义了
1.改为超表
运用 create_hypertable()来把普通表改为超级表
SELECT create_hypertable('表名_cs', 'alarm_time', chunk_time_interval => INTERVAL '7 day');
如果有啥不懂的话,可以参考postgresql数据库 timescaledb 时序库 把大数据量表转换为超表这篇文章
2.把超表改为可压缩状态
ALTER TABLE 模式名.表名 SET (press,press_segmentby = '字段',press_orderby = 'collect_time DESC');
3.压缩
压缩块
SELECT compress_chunk( '_timescaledb_internal._hyper_4_238_chunk');
解压缩
SELECT decompress_chunk('_timescaledb_internal._hyper_4_26_chunk');
查看压缩后状态
压缩前
压缩后
查询压缩后空间状态
SELECT * FROM pressed_chunk_stats;
压缩后存放的位置
如果有啥问题 欢迎指出,谢谢。
如果觉得《postgresql数据库 timescaledb 时序库 超级表 块的压缩(compress_chunk()的应用)》对你有帮助,请点赞、收藏,并留下你的观点哦!