Timescale-减压块

Timescale-减压块


环境:

PostgreSQL数据库

V2.x版本

减压

如果您需要在压缩块中回填或更新数据,您应该先解压缩该块。将数据插入压缩块比将数据插入未压缩块更费时费力,因此,如果您需要回填大量数据,那么减压该块也是一个好主意。

注意: 在规划压缩策略时,如果需要,请确保留出足够的额外存储容量用于减压块 。

这些是解压块准备插入或回填数据的主要步骤:

  • 暂时关闭任何现有的压缩策略。这可以阻止策略尝试压缩您当前正在处理的块。
  • 解压块。
  • 执行插入或回填。
  • 重新启用压缩策略。这将重新压缩您工作的块。

手动减压块

1.解压缩单个块

要按名称解压缩单个块,请运行此命令:

SELECT decompress_chunk('chunk_name');

2.按时间减压块

要根据时间范围解压缩一组块,您可以使用输出来解压缩每个块:

SELECT decompress_chunk(i) 
	from show_chunks('table_name',newer_than,older_than) i;

3.在更精确的约束下解压缩块

SELECT tableoid::regclass FROM metrics
  WHERE time = '2000-01-01' AND device_id = 1
  GROUP BY tableoid;

                 tableoid
------------------------------------------
 _timescaledb_internal._hyper_72_37_chunk

反填充压缩块的历史数据

当您回填数据时,您正在将过去具有时间戳的数据插入到已经压缩的相应块中。

在本节中,我们解释如何将数据反填到临时表中。临时表仅在数据库会话期间存在,然后自动丢弃,这是执行大型回填操作的最简单方法。

如果您定期回填,您可能更喜欢使用常规表,以便多个编写器可以在流程之前同时插入表中。在这种情况下,在完成数据回填后,通过截断表以准备下一个回填进行清理,或将其完全丢弃。


背填与提供的功能

1.在 psql 提示下,创建一个临时表,其模式与您想要回填的超表相同。在此示例中,我们的表称为"数据",数据列为:

CREATE TEMPORARY TABLE cpu_temp AS SELECT * FROM example WITH NO DATA;

2.将数据插入回填表。

3.使用提供的回填功能。此功能停止压缩策略,识别回填数据对应的压缩块,减压块,将背填表中的数据插入主超表,然后重新启用压缩策略

CALL decompress_backfill(staging_table=>'cpu_temp', destination_hypertable=>'example');

手动回填

1.在psql提示下,找到策略:job_id

SELECT s.job_id
FROM timescaledb_information.jobs j
  INNER JOIN timescaledb_information.job_stats s ON j.job_id = s.job_id
  WHERE j.proc_name = 'policy_compression' AND s.hypertable_name = <target table>;

2.暂停压缩,以防止策略尝试压缩您当前正在处理的块:

SELECT alter_job(<job_id>, scheduled => false);

3.解压缩要修改的块。

SELECT decompress_chunk('_timescaledb_internal._hyper_2_2_chunk');

每个块重复上述步骤。或者,您可以使用:show_chunks

SELECT decompress_chunk(i) from show_chunks('conditions', newer_than, older_than) i;

4.当您解压缩了要修改的所有块时,执行或命令以回填数据。INSERT UPDATE

5.重新启动压缩策略工作。下次工作运行时,它会重新压缩任何被减压的块。

SELECT alter_job(<job_id>, scheduled => true);

或者,要立即重新压缩块,请使用命令:run_job

CALL run_job(<job_id>);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值