Timescale-手动压缩
环境:
PostgreSQL数据库
V2.x版本
手动压缩
在大多数情况下,自动压缩策略就足够了。但是,如果您想要对压缩进行更多控制,您也可以手动压缩特定块。
注意:压缩会更改磁盘上的数据,因此在开始之前始终备份!
手动压缩块
在开始之前,您需要压缩块列表。在此示例中,我们使用一种称为超表的超表,并压缩这些大于三天的块
1.选择块进行压缩
①在 psql 提示下,选择表中超过三天的所有块
SELECT show_chunks('example', older_than => INTERVAL '3 days');
②这将返回一个块列表。记下大块名称:
show_chunks |
---|
_timescaledb_internal_hyper_1_2_chunk |
_timescaledb_internal_hyper_1_3_chunk |
当您对大块列表感到满意时,您可以使用大块名称手动压缩每个块名。
2.手动压缩块
①在psql提示下,压缩块:
SELECT compress_chunk( '<chunk_name>');
② 请通过此命令检查压缩结果
SELECT * FROM chunk_compression_stats('example');
结果显示给定超音速的块、其压缩状态和一些其他统计数据:
chunk_schema | chunk_name | compression_status | before_compression_table_bytes | before_compression_index_bytes | before_compression_toast_bytes | before_compression_total_bytes | after_compression_table_bytes | after_compression_index_bytes | after_compression_toast_bytes | after_compression_total_bytes | node_name |
---|---|---|---|---|---|---|---|---|---|---|---|
_timescaledb_internal | _hyper_1_1_chunk | 压缩 | 8192 字节 | 16 kB | 8192 字节 | 32千瓦 | 8192 字节 | 16 kB | 8192 字节 | 32千瓦 | |
_timescaledb_internal | _hyper_1_20_chunk | 解压 |
③ 对于要压缩的所有块重复。
在单个模式中手动压缩快
您可以选择块并使用命令的输出来压缩每个命令,从而在单个命令中压缩它们,如:show_chunks
SELECT compress_chunk(i) from show_chunks('example', now() - interval '1 week', now() - interval '3 weeks') i;