降采样聚合口径是什么
降采样不只是「求个平均」:每层保留哪些统计量,决定了上层还能回答什么问题。可以跨层回算的指标是 sum 与 count(加权平均等于 sum(sum_value) 除以 sum(count)),只保留 avg 就无法合并出正确的总平均。常见做法是原始层保留数天,随后 1 分钟、1 小时、1 天逐层减采样并延长保留期,让报表查高层、故障定位查原始层。
基本信息
| 可回算指标 | sum 与 count 可跨层合并(加权平均 = sum(sum) / sum(count)) |
|---|---|
| 不可回算 | 只存 avg 无法合并出正确总平均 |
| 常见层级 | 10s → 1m → 5m → 1h → 1d |
| 保留策略 | 越上层保留越久,越底层保留越短 |
| 所属系统 | 时序数据库通用的降采样设计 |
典型使用场景
- 长期趋势图:按小时或天查询,直接读高层聚合结果
- 故障定位:回到原始层看秒级细节
- 容量控制:用降采样减少长期存储的数据点数量
- 口径统一:把聚合口径写进任务定义,避免各团队各算一套
- 跨层校验:用高层数据与原始层重算结果做抽样比对
分层字段设计
分层字段设计
原始层(10 秒精度,保留 7 天)
字段:value
1 分钟层(保留 90 天)
字段:sum_value, count, max_value, min_value
1 小时层(保留 2 年)
字段:sum_value, count, max_value, min_value
# 上层求平均:sum(sum_value) / sum(count),不要对平均值再取平均统计量能否回算
| 统计量 | 跨层合并 | 说明 |
|---|---|---|
| sum | 可以 | 各窗口直接相加 |
| count | 可以 | 相加后用于加权平均 |
| avg | 不可以 | 必须由 sum 与 count 重新计算 |
| max / min | 可以 | 上层取各窗口的极值 |
| last | 视实现 | 只在同粒度下有明确含义 |
SLA 与容量报表通常查高层聚合,故障定位查原始层,两层口径要在文档里写清楚,避免各团队算出来的数字对不上。
只存平均值会让上层无法再聚合,事后补字段意味着重算历史并回填,代价远高于一开始就存 sum 与 count。
分层窗口不是整数倍关系(例如 5 分钟到 1 小时)时边界处理要显式对齐,否则跨层累加会出现误差。