'ALTER TABLE' 语句用于启用压缩并设置压缩选项。

ALTER 语句本身不会压缩超表。为此,可以使用 add_compression_policy 函数创建压缩策略,或者使用 compress_chunk 函数手动压缩特定的超表数据块。

语法是

ALTER TABLE <table_name> SET (timescaledb.compress,
timescaledb.compress_orderby = '<column_name> [ASC | DESC] [ NULLS { FIRST | LAST } ] [, ...]',
timescaledb.compress_segmentby = '<column_name> [, ...]',
timescaledb.compress_chunk_time_interval='interval'
);
名称类型描述
timescaledb.compressBOOLEAN启用或禁用压缩
名称类型描述
timescaledb.compress_orderbyTEXT压缩使用的排序,指定方式与 SELECT 查询中的 ORDER BY 子句相同。默认值是超表时间列的降序。
timescaledb.compress_segmentbyTEXT用于对压缩段进行键控的列列表。表示数据源的标识符,例如 device_idtags_id 通常是一个不错的选择。默认情况下,没有 segment by 列。
timescaledb.compress_chunk_time_intervalTEXT实验性功能:设置用于将数据块滚入的压缩数据块时间间隔。此参数压缩每个数据块,然后尽可能地将其不可逆地合并到先前的相邻数据块中,以减少超表中的数据块总数。请注意,数据块在解压缩期间不会被拆分。它应设置为当前数据块间隔的倍数。此选项可以独立于其他压缩设置进行更改,并且不需要 timescaledb.compress 参数。
名称类型描述
table_nameTEXT支持压缩的超表
column_nameTEXT用于排序或分段的列
intervalTEXT用于将压缩数据块滚入的时间间隔

配置一个摄取设备数据的超表以使用压缩。在此示例中,如果经常查询关于特定设备或设备集的超表,则应使用 device_id 对压缩进行分段,以获得更高的性能。

ALTER TABLE metrics SET (timescaledb.compress, timescaledb.compress_orderby = 'time DESC', timescaledb.compress_segmentby = 'device_id');

您还可以指定压缩数据块间隔,而无需更改其他压缩设置

ALTER TABLE metrics SET (timescaledb.compress_chunk_time_interval = '24 hours');

要禁用先前设置的选项,请将间隔设置为 0

ALTER TABLE metrics SET (timescaledb.compress_chunk_time_interval = '0');

关键词

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