Timescale Cloud: 性能、扩展性、企业级
自托管产品
MST
重新压缩在压缩后插入了更多数据的已压缩分块。
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`。
名称 | 类型 | 描述 |
---|---|---|
chunk | REGCLASS | 要重新压缩的分块。如果不在搜索路径中,则必须包含模式,例如 `_timescaledb_internal`。 |
名称 | 类型 | 描述 |
---|---|---|
if_not_compressed | BOOLEAN | 如果为 `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;BEGINFOR chunk IN SELECT format('%I.%I', chunk_schema, chunk_name)::regclassFROM timescaledb_information.chunksWHERE is_compressed = trueLOOPRAISE NOTICE 'Recompressing %', chunk::text;CALL recompress_chunk(chunk, true);END LOOP;END$$;
关键词