postgresql数据库 timescaledb 时序库 超级表 块的压缩(compress_chunk()的应用)

postgresql数据库 timescaledb 时序库 超级表 块的压缩(compress_chunk()的应用)

前言

在工作中,使用postgresql数据库 尤其是timescaledb 时序库往往会遇到一些问题:
甲方提供的内存不足,只能保留部分数据,
或者储存的的数据量太大

这个 时候我们就需要对数据压缩了

这张图比较有趣

compress_chunk()

在timescaledb 时序库 有专门的函数 api compress_chunk() 用来压缩超级表

参数

compress_chunk函数用于压缩特定的块。当用户想要更多地控制压缩调度时,最常用这个函数来代替add_compression_policy函数
必选参数

NameDescription
chunk_name要压缩的块的名称

可选参数

NameDescription
if_not_compressed设置为true将跳过已经压缩的块。默认值为false。
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 STRICT
  COST 1

使用步骤

一般在 timescaledb 时序库 大量数据的表都是超级表 ,如果不是的建议你改为超表,要不你用 timescaledb 数据库就没有多少意义了

1.改为超表

运用 create_hypertable()来把普通表改为超级表

SELECT create_hypertable('表名_cs', 'alarm_time', chunk_time_interval => INTERVAL '7 day');

如果有啥不懂的话,可以参考postgresql数据库 timescaledb 时序库 把大数据量表转换为超表这篇文章

2.把超表改为可压缩状态

ALTER TABLE 模式名.表名 SET (
timescaledb.compress,
timescaledb.compress_segmentby = '字段',
timescaledb.compress_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 timescaledb_information.compressed_chunk_stats;

在这里插入图片描述

压缩后存放的位置

在这里插入图片描述

在这里插入图片描述

如果有啥问题 欢迎指出,谢谢。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yang_z_1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值