重新压缩在压缩后插入了更多数据的压缩数据块。

recompress_chunk(
chunk REGCLASS,
if_not_compressed BOOLEAN = false
)

您还可以通过运行与您的压缩策略关联的作业来重新压缩数据块。recompress_chunk 通过允许您定位特定数据块,为您提供更精细的控制。

重要提示

recompress_chunk 自 2.14 版本起已弃用,并将在未来版本中移除。此过程现在是一个包装器,它调用 compress_chunk 而不是自身。

重要提示

recompress_chunk 被实现为一个 SQL 过程,而不是一个函数。使用 CALL 调用该过程。不要使用 SELECT 语句。

注意

recompress_chunk 仅适用于以前压缩过的数据块。要首次压缩数据块,请使用 compress_chunk

名称类型描述
chunkREGCLASS要重新压缩的数据块。必须包含模式,例如 _timescaledb_internal,如果它不在搜索路径中。
名称类型描述
if_not_compressedBOOLEAN如果为 true,则在数据块已压缩时打印通知而不是报错。默认为 false

重新压缩数据块 timescaledb_internal._hyper_1_2_chunk

CALL recompress_chunk('_timescaledb_internal._hyper_1_2_chunk');

在 TimescaleDB 2.6.0 及更高版本中,recompress_chunk 被实现为一个过程。 之前,它被实现为一个函数。如果您正在升级到 TimescaleDB 2.6.0 或更高版本,recompress_chunk 函数可能会导致错误。例如,尝试运行 SELECT recompress_chunk(i.show_chunks, true) FROM... 会给出以下错误

ERROR: recompress_chunk(regclass, boolean) is a procedure

要修复此错误,请使用 CALL 而不是 SELECT。您可能还需要编写一个过程来替换您的 SELECT 语句中的全部功能。例如

DO $$
DECLARE chunk regclass;
BEGIN
FOR chunk IN SELECT format('%I.%I', chunk_schema, chunk_name)::regclass
FROM timescaledb_information.chunks
WHERE is_compressed = true
LOOP
RAISE NOTICE 'Recompressing %', chunk::text;
CALL recompress_chunk(chunk, true);
END LOOP;
END
$$;

关键词

在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页