TimescaleDB 按多个维度(列)进行压缩
一、多维度压缩的原理
- •
核心机制:
TimescaleDB 的压缩功能通过
compress_segmentby
指定一个或多个列,将数据按这些列的值进行分组(Segment),每个分组内的数据按时间顺序压缩为列式存储。-
作用:
-
提升压缩率(相同分组的连续数据更易压缩)。
-
加速基于分组列的查询(如
WHERE city='北京' AND device='传感器A'
)
-
-
二、多维度压缩的配置方法
1. 语法
ALTER TABLE 表名 SET (timescaledb.compress, timescaledb.compress_segmentby = '列1, 列2, ...' -- 指定多个列
);
2. 示例
假设有一个表 sensor_data
,记录不同城市、不同设备的温度数据:
-- 创建超表并按时间和城市、设备分区
SELECT create_hypertable('sen