当前位置: 首页 > news >正文

深入 T-Digest:分位数聚合与 percentile

深入 T-Digest:分位数聚合与 percentile

在时序数据分析中,仅仅知道平均值远远不够。分位数(Percentile)能够揭示数据的分布特征,帮助我们理解"绝大多数数据落在什么范围内"。SonnetDB 使用 T-Digest 算法实现高效的分位数计算,支持 p50、p90、p95、p99 等常用分位数。

为什么需要 T-Digest

传统分位数计算需要将所有数据排序后取特定位置的值,这对于海量时序数据来说计算代价极高。T-Digest 是一种近似算法,它通过将数据点聚合成质心(Centroid)来压缩数据,在保证较高精度的同时大幅降低内存占用和计算时间。

T-Digest 的核心特点是:在数据分布密集的区域使用较高的精度,在数据稀疏的区域使用较低的精度。这种自适应特性使得 T-Digest 特别适合处理时序数据中常见的偏斜分布。

基本用法

SonnetDB 提供 percentile(field, n) 函数来计算第 n 百分位数,以及 p50p90p95p99 等便捷别名:

SELECTpercentile(usage, 50)  AS p50,    -- 第 50 百分位数(中位数)percentile(usage, 90)  AS p90,    -- 第 90 百分位数percentile(usage, 95)  AS p95,    -- 第 95 百分位数percentile(usage, 99)  AS p99,    -- 第 99 百分位数p50(usage)             AS p50_alias,  -- 便捷别名p90(usage)             AS p90_alias,p95(usage)             AS p95_alias,p99(usage)             AS p99_alias
FROM cpu
WHERE host = 'server-01';

解读分位数结果

假设 CPU 使用率的查询结果如下:

  • p50 = 0.55:50% 的时间内使用率不超过 55%
  • p90 = 0.85:90% 的时间内使用率不超过 85%
  • p99 = 0.93:99% 的时间内使用率不超过 93%

这意味着系统在大部分时间(90%)负载良好,但有 1% 的时间使用率超过 93%,这些极端值可能就是需要关注的性能瓶颈。

调试 T-Digest 内部状态

如果你对 T-Digest 的内部结构感兴趣,可以使用 tdigest_agg 函数查看聚合状态的 JSON 表示:

SELECT tdigest_agg(usage) AS tdigest_state
FROM cpu
WHERE host = 'server-01';

返回的 JSON 包含以下信息:

  • compression:压缩参数,控制精度与内存的平衡
  • centroids:质心列表(均值与权重),T-Digest 的核心数据结构
  • count:参与聚合的数据点总数

通过分析质心列表,你可以了解 T-Digest 如何在数据空间中分布精度资源。

与 GROUP BY time 配合

分位数聚合与时间桶配合,可以分析不同时间段的数据分布变化:

SELECTp50(usage) AS p50_usage,p95(usage) AS p95_usage,p99(usage) AS p99_usage
FROM cpu
WHERE host = 'server-01'
GROUP BY time(1h);

这在 SLA 监控中尤为有用——你可以追踪每个小时的 p99 延迟或使用率,确保服务满足性能目标。T-Digest 算法的低内存特性使得即使在大规模时间桶聚合中也能保持高效的性能表现。

http://www.jsqmd.com/news/803253/

相关文章:

  • 铆接工具哪个品牌好用? - 中媒介
  • 告别命令行!用SUMO的netedit图形化编辑器,5分钟搞定复杂路网建模
  • 基于MCP协议与HaE工具构建AI安全情报助手实战指南
  • 武汉SCMP供应链管理专家官方报考入口及权威认证机构选择指南 - 众智商学院课程中心
  • 国内矿粉粘结剂头部品牌排行:性能与服务双维度实测对比 - 奔跑123
  • 别再折腾源码编译了!Ubuntu 20.04下用apt-get一键安装Asterisk PBX(附SIP账号配置详解)
  • 公司展示型小程序怎么做?无需代码快速制作方法 - 码云数智
  • Python 3.12 Std_Libs - String - 03 - 去除空白与填充
  • 原来性价比高的蒸汽发生器还有这么多门道,你了解吗? - 企业推荐官【官方】
  • 2026年新疆票据印刷、不干胶标签一站式采购完全指南|源头直供绿色认证政企信赖 - 优质企业观察收录
  • 1.postgresql的数据类型
  • Element Plus Admin:5分钟快速搭建企业级后台管理系统的终极指南
  • 5大核心功能:让旧iOS设备重获新生的终极工具指南
  • 基于 TGLVM 算法的迁移学习分类系统
  • 初创公司如何借助Taotoken实现AI能力快速集成与成本可控
  • 2026年美度中国区售后服务网络全面升级:真实体验与避坑指南(最新电话及地址) - 亨得利官方服务中心
  • 广州SCMP供应链管理专家官方报考入口及权威认证机构选择指南 - 众智商学院课程中心
  • 长岛民宿推荐|3家实体实测对比,首选长岛仙品民宿 - 奔跑123
  • 新手别怕!STM32F103ZET6定时器从TIM1到TIM7,到底该用哪个?
  • 基于Claude的智能编码工作流引擎:从AI代码生成到自动化开发流水线
  • 2026年4月疏通服务公司推荐,地漏疏通服务/卫生间测漏/地暖管道清洗/地暖清洗/外网测漏,疏通服务企业哪家可靠 - 品牌推荐师
  • 打孔工具厂家哪家靠谱? - 中媒介
  • mysql 配置8C16G
  • 2026年别墅大门厂家哪家好?铸铝门、重装超防门源头工厂推荐及别墅大门十大品牌权威盘点 - 企业品牌优选推荐官
  • FastAPI项目实战:从零构建现代化Python Web API的完整指南
  • postgresql用户及权限管理
  • uBlock Origin终极指南:3步打造无广告浏览体验
  • 使用 HyperLogLog 进行基数估计:distinct_count() 函数详解
  • 储能柜清洁度萃取设备厂家大盘点:西恩士实力领跑排行 - 工业设备研究社
  • 回落期的“扫雷”行动:Infoseek数据看板如何揭示被掩盖的真相