性能测试报告
本文提供百度智能云 TSDB 专享版在车联网、物联网和服务器监控三类代表性时序数据场景下的性能测试结果,覆盖不同计算规格和节点数量。您可以根据自身数据模型、采样频率、数据规模和查询方式,参考本文了解 TSDB 专享版的大致读写性能。
本文结果是在特定测试条件下取得的实测值,不构成服务等级协议(SLA)或性能承诺。实际性能会受到数据模型、单批写入行数、Tag 基数、Field 数量、查询范围、查询并发和冷热数据状态等因素影响。
测试场景
本次测试使用以下三类数据模型:
| 场景 | 数据模型 | 单个实体每个采集周期的数据 |
|---|---|---|
| 车联网 | 一张车辆遥测宽表,覆盖位置、动力电池、电驱电控、热管理、底盘、故障诊断等指标 | 1 行,220 个指标点 |
| 物联网 | 一张设备遥测表,共定义 64 个 Field,并根据设备能力和事件状态稀疏写入 | 1 行,平均约 19.7 个指标点 |
| 服务器监控 | CPU、内存、磁盘、网络和服务共 5 张表 | 5 行,共 60 个指标点 |
车联网和物联网数据分别按租户、车队或网关、设备组织;服务器监控数据按租户、集群、实例组织。测试查询覆盖单实体最新状态、明细、汇总、单实体趋势、分组趋势和大范围扫描聚合等常见访问方式。完整的 Measurement、Tag 和 Field 定义请参见数据集详情。
测试规格
测试覆盖以下六种集群配置:
| 规格标识 | 单节点配置 | 节点数 |
|---|---|---|
tsdb.c2m8 |
2 核 8 GB | 3 |
tsdb.c4m16 |
4 核 16 GB | 3 |
tsdb.c8m32 |
8 核 32 GB | 3 |
tsdb.c16m64 |
16 核 64 GB | 3 |
tsdb.c32m128 |
32 核 128 GB | 3 |
tsdb.c16m64 |
16 核 64 GB | 6 |
其中,tsdb.c32m128 × 3 与 tsdb.c16m64 × 6 的集群 CPU 和内存总量相同,节点数量不同。
指标说明
| 指标 | 说明 |
|---|---|
| 写入行数/秒 | 每秒成功写入的时序数据行数 |
| 写入指标点数/秒 | 每秒成功写入的 Field 数量 |
| 查询吞吐(QPS) | 每秒实际完成的查询数量 |
| p50 | 50% 的查询耗时不超过该值 |
| p95 | 95% 的查询耗时不超过该值 |
| p99 | 99% 的查询耗时不超过该值 |
查询耗时从客户端发出查询请求开始计算,到客户端读取完全部查询结果为止。查询耗时均以毫秒为单位。
写入性能
每组写入测试从空数据集开始,持续写入 20 分钟。以下结果均无写入失败,也没有请求被取消或丢弃。表中的写入速率为测试窗口内的实际成功写入结果。
车联网
车联网写入数据使用 10 秒采样间隔,每行包含 220 个指标点。
| 集群配置 | 累计写入行数 | 写入行数/秒 | 写入指标点数/秒 |
|---|---|---|---|
tsdb.c2m8 × 3 |
4,129,000 | 3,441 | 756,983 |
tsdb.c4m16 × 3 |
12,457,880 | 10,382 | 2,283,945 |
tsdb.c8m32 × 3 |
32,169,440 | 26,808 | 5,897,731 |
tsdb.c16m64 × 3 |
59,860,000 | 49,883 | 10,974,338 |
tsdb.c32m128 × 3 |
83,840,000 | 69,867 | 15,370,667 |
tsdb.c16m64 × 6 |
119,772,000 | 99,810 | 21,958,200 |
物联网
物联网写入数据使用 10 秒采样间隔,64 个 Field 稀疏写入,平均每行约 19.7 个指标点。
| 集群配置 | 累计写入行数 | 写入行数/秒 | 写入指标点数/秒 |
|---|---|---|---|
tsdb.c2m8 × 3 |
33,470,000 | 27,892 | 548,727 |
tsdb.c4m16 × 3 |
89,440,000 | 74,533 | 1,466,572 |
tsdb.c8m32 × 3 |
179,660,000 | 149,717 | 2,946,161 |
tsdb.c16m64 × 3 |
359,320,000 | 299,433 | 5,892,893 |
tsdb.c32m128 × 3 |
479,180,000 | 399,317 | 7,858,527 |
tsdb.c16m64 × 6 |
719,020,000 | 599,183 | 11,792,039 |
服务器监控
服务器监控写入数据使用 15 秒采样间隔。每个实例在每个采集周期向 5 张表各写入 1 行,每行平均包含 12 个指标点。
| 集群配置 | 累计写入行数 | 写入行数/秒 | 写入指标点数/秒 |
|---|---|---|---|
tsdb.c2m8 × 3 |
59,673,500 | 49,728 | 596,735 |
tsdb.c4m16 × 3 |
119,880,000 | 99,900 | 1,198,800 |
tsdb.c8m32 × 3 |
239,740,000 | 199,783 | 2,397,401 |
tsdb.c16m64 × 3 |
479,670,000 | 399,725 | 4,796,700 |
tsdb.c32m128 × 3 |
682,848,000 | 569,040 | 6,828,480 |
tsdb.c16m64 × 6 |
959,380,000 | 799,483 | 9,593,800 |
查询性能
查询测试为每类场景、每种集群配置分别装载 7 天历史数据,测试期间不并发写入,查询前完成数据预热。客户端与集群位于同一 VPC,测试网络往返延迟约为 1.9~2.1 毫秒。
单实体与分组查询按固定速率持续发起同一类查询,并逐步提高请求速率。结果采用能够稳定完成的最高测试档,记录实际完成的查询吞吐和查询耗时。大范围扫描聚合查询按单次查询耗时展示。
大范围扫描聚合结果中的“覆盖行数”根据实体数量、采样间隔、查询窗口和 region 数据分布估算,表示查询条件覆盖的时序数据记录数量,不等同于数据库实际读取的物理行数或存储字节数。
数据集表中的压缩率按 (原始写入数据量 - 数据落盘容量) / 原始写入数据量 计算,结果保留一位小数。数据落盘容量为后台数据整理完成后实际占用的存储容量。
不同集群配置使用的数据规模随规格增长。请同时结合数据规模、查询时间范围、QPS 和查询耗时理解结果,不宜仅根据单一指标进行跨规格比较。
本次测试使用的完整查询语句、参数和返回结果说明请参见查询 SQL。
车联网
车联网查询数据使用 60 秒采样间隔,覆盖 7 天历史数据,每行包含 220 个指标点。
| 集群配置 | 数据行数 | 数据落盘容量 | 压缩率 |
|---|---|---|---|
tsdb.c2m8 × 3 |
6,048,000 | 3.95 GB | 89.5% |
tsdb.c4m16 × 3 |
12,096,000 | 7.69 GB | 89.8% |
tsdb.c8m32 × 3 |
24,192,000 | 15.38 GB | 89.8% |
tsdb.c16m64 × 3 |
48,384,000 | 30.58 GB | 89.9% |
tsdb.c32m128 × 3 |
96,768,000 | 60.72 GB | 89.9% |
tsdb.c16m64 × 6 |
96,768,000 | 60.83 GB | 89.9% |
实测查询吞吐(QPS)
| 查询类型 | 查询范围 | c2m8 × 3 |
c4m16 × 3 |
c8m32 × 3 |
c16m64 × 3 |
c32m128 × 3 |
c16m64 × 6 |
|---|---|---|---|---|---|---|---|
| 单车最新状态 | 1 小时 | 80 | 120 | 210 | 780 | 330 | 430 |
| 单车最近 20 行明细 | 1 小时 | 60 | 90 | 160 | 510 | 262 | 340 |
| 单车胎压汇总 | 1 小时 | 80 | 160 | 260 | 620 | 435 | 565 |
| 单车胎压汇总 | 24 小时 | 9 | 20 | 24 | 40 | 55 | 70 |
| 单车电量趋势 | 24 小时 | 8 | 17 | 19 | 31 | 44 | 56 |
| 车队功率趋势 | 24 小时 | 7 | 15 | 18 | 30 | 43 | 55 |
| 单车电量趋势 | 7 天 | 5 | 11 | 15 | 22 | 30 | 42 |
| 车队功率趋势 | 7 天 | 2 | 6 | 9 | 14 | 26 | 29 |
查询耗时(p50 / p95 / p99,毫秒)
| 查询类型 | 查询范围 | c2m8 × 3 |
c4m16 × 3 |
c8m32 × 3 |
c16m64 × 3 |
c32m128 × 3 |
c16m64 × 6 |
|---|---|---|---|---|---|---|---|
| 单车最新状态 | 1 小时 | 35 / 299 / 557 | 52 / 101 / 177 | 95 / 143 / 207 | 29 / 34 / 36 | 61 / 75 / 83 | 45 / 52 / 55 |
| 单车最近 20 行明细 | 1 小时 | 43 / 152 / 393 | 63 / 136 / 180 | 106 / 177 / 235 | 43 / 60 / 66 | 72 / 98 / 116 | 53 / 70 / 77 |
| 单车胎压汇总 | 1 小时 | 33 / 144 / 326 | 49 / 180 / 343 | 40 / 46 / 50 | 29 / 33 / 35 | 50 / 58 / 61 | 37 / 43 / 45 |
| 单车胎压汇总 | 24 小时 | 298 / 541 / 610 | 306 / 486 / 634 | 389 / 528 / 620 | 303 / 410 / 455 | 353 / 455 / 503 | 267 / 325 / 345 |
| 单车电量趋势 | 24 小时 | 321 / 580 / 673 | 567 / 1,562 / 2,718 | 514 / 890 / 1,134 | 319 / 425 / 494 | 330 / 434 / 484 | 274 / 360 / 388 |
| 车队功率趋势 | 24 小时 | 383 / 1,573 / 2,759 | 587 / 1,345 / 2,593 | 639 / 1,136 / 1,434 | 316 / 416 / 477 | 323 / 420 / 471 | 275 / 359 / 386 |
| 单车电量趋势 | 7 天 | 502 / 591 / 899 | 634 / 1,426 / 2,109 | 1,126 / 1,945 / 2,316 | 423 / 560 / 661 | 405 / 524 / 559 | 379 / 504 / 550 |
| 车队功率趋势 | 7 天 | 1,072 / 1,166 / 1,258 | 2,193 / 5,866 / 7,819 | 1,733 / 3,035 / 4,289 | 494 / 605 / 651 | 658 / 838 / 940 | 621 / 884 / 1,080 |
本场景使用 1 条大区故障趋势查询测试大范围扫描聚合能力。该查询按 region 覆盖约六分之一的车辆,先按车辆和时间分组计算故障增量,再按时间汇总整个大区,分别测试 24 小时和 7 天窗口。
| 查询窗口 | 指标 | c2m8 × 3 |
c4m16 × 3 |
c8m32 × 3 |
c16m64 × 3 |
c32m128 × 3 |
c16m64 × 6 |
|---|---|---|---|---|---|---|---|
| 24 小时 | 覆盖行数 | 约 144,000 | 约 288,000 | 约 576,000 | 约 1,152,000 | 约 2,304,000 | 约 2,304,000 |
| 24 小时 | 单次查询耗时 | 375 ms | 426 ms | 491 ms | 494 ms | 526 ms | 700 ms |
| 7 天 | 覆盖行数 | 约 1,008,000 | 约 2,016,000 | 约 4,032,000 | 约 8,064,000 | 约 16,128,000 | 约 16,128,000 |
| 7 天 | 单次查询耗时 | 1,083 ms | 1,303 ms | 1,390 ms | 1,527 ms | 2,454 ms | 2,843 ms |
物联网
物联网查询数据使用 5 分钟采样间隔,覆盖 7 天历史数据。64 个 Field 稀疏写入,平均每行约 19.7 个指标点。
| 集群配置 | 数据行数 | 数据落盘容量 | 压缩率 |
|---|---|---|---|
tsdb.c2m8 × 3 |
25,200,000 | 2.29 GB | 87.0% |
tsdb.c4m16 × 3 |
50,400,000 | 4.55 GB | 87.1% |
tsdb.c8m32 × 3 |
100,800,000 | 9.20 GB | 86.9% |
tsdb.c16m64 × 3 |
201,600,000 | 18.27 GB | 87.0% |
tsdb.c32m128 × 3 |
403,200,000 | 37.18 GB | 86.8% |
tsdb.c16m64 × 6 |
403,200,000 | 36.99 GB | 86.9% |
实测查询吞吐(QPS)
| 查询类型 | 查询范围 | c2m8 × 3 |
c4m16 × 3 |
c8m32 × 3 |
c16m64 × 3 |
c32m128 × 3 |
c16m64 × 6 |
|---|---|---|---|---|---|---|---|
| 单设备最新状态 | 6 小时 | 25 | 50 | 85 | 105 | 210 | 169 |
| 单设备最近 20 行明细 | 6 小时 | 16 | 34 | 50 | 72 | 145 | 119 |
| 单设备告警汇总 | 6 小时 | 31 | 65 | 110 | 140 | 280 | 228 |
| 单设备告警汇总 | 24 小时 | 10 | 22 | 38 | 48 | 80 | 86 |
| 单设备趋势 | 24 小时 | 7 | 13 | 24 | 35 | 59 | 61 |
| 网关质量趋势 | 24 小时 | 9 | 15 | 31 | 43 | 68 | 74 |
| 单设备趋势 | 7 天 | 7 | 10 | 15 | 27 | 40 | 35 |
| 网关质量趋势 | 7 天 | 5 | 7 | 18 | 24 | 34 | 39 |
查询耗时(p50 / p95 / p99,毫秒)
| 查询类型 | 查询范围 | c2m8 × 3 |
c4m16 × 3 |
c8m32 × 3 |
c16m64 × 3 |
c32m128 × 3 |
c16m64 × 6 |
|---|---|---|---|---|---|---|---|
| 单设备最新状态 | 6 小时 | 111 / 317 / 485 | 187 / 308 / 531 | 209 / 335 / 415 | 109 / 188 / 236 | 76 / 95 / 109 | 94 / 120 / 139 |
| 单设备最近 20 行明细 | 6 小时 | 162 / 460 / 840 | 292 / 488 / 700 | 191 / 378 / 481 | 148 / 296 / 390 | 97 / 136 / 179 | 145 / 306 / 410 |
| 单设备告警汇总 | 6 小时 | 91 / 535 / 1,132 | 106 / 272 / 508 | 82 / 158 / 249 | 92 / 135 / 163 | 70 / 86 / 94 | 89 / 109 / 124 |
| 单设备告警汇总 | 24 小时 | 295 / 575 / 997 | 245 / 394 / 535 | 202 / 287 / 355 | 206 / 261 / 299 | 187 / 239 / 262 | 179 / 237 / 432 |
| 单设备趋势 | 24 小时 | 395 / 837 / 1,459 | 392 / 520 / 700 | 349 / 550 / 737 | 520 / 1,004 / 1,277 | 237 / 304 / 338 | 231 / 306 / 391 |
| 网关质量趋势 | 24 小时 | 268 / 334 / 539 | 290 / 391 / 489 | 344 / 584 / 746 | 498 / 925 / 1,128 | 209 / 266 / 291 | 208 / 267 / 305 |
| 单设备趋势 | 7 天 | 426 / 813 / 1,456 | 564 / 902 / 1,281 | 306 / 443 / 515 | 405 / 678 / 837 | 262 / 351 / 376 | 438 / 738 / 968 |
| 网关质量趋势 | 7 天 | 436 / 512 / 592 | 396 / 490 / 509 | 595 / 1,131 / 1,482 | 255 / 340 / 370 | 219 / 268 / 314 | 440 / 746 / 962 |
本场景使用 1 条大区告警趋势查询测试大范围扫描聚合能力。该查询按 region 覆盖约六分之一的设备,先按设备和时间分组计算告警与错误增量,再按时间汇总整个大区,分别测试 24 小时和 7 天窗口。
| 查询窗口 | 指标 | c2m8 × 3 |
c4m16 × 3 |
c8m32 × 3 |
c16m64 × 3 |
c32m128 × 3 |
c16m64 × 6 |
|---|---|---|---|---|---|---|---|
| 24 小时 | 覆盖行数 | 约 600,000 | 约 1,200,000 | 约 2,400,000 | 约 4,800,000 | 约 9,600,000 | 约 9,600,000 |
| 24 小时 | 单次查询耗时 | 875 ms | 1,476 ms | 1,352 ms | 1,703 ms | 3,490 ms | 3,152 ms |
| 7 天 | 覆盖行数 | 约 4,200,000 | 约 8,400,000 | 约 16,800,000 | 约 33,600,000 | 约 67,200,000 | 约 67,200,000 |
| 7 天 | 单次查询耗时 | 25,870 ms | 27,116 ms | 29,426 ms | 61,571 ms | 62,456 ms | 76,874 ms |
服务器监控
服务器监控查询数据使用 60 秒采样间隔,覆盖 7 天历史数据。每个实例在每个采集周期向 5 张表各写入 1 行。
| 集群配置 | 数据行数 | 数据落盘容量 | 压缩率 |
|---|---|---|---|
tsdb.c2m8 × 3 |
50,400,000 | 2.47 GB | 90.5% |
tsdb.c4m16 × 3 |
100,800,000 | 4.98 GB | 90.5% |
tsdb.c8m32 × 3 |
201,600,000 | 9.88 GB | 90.5% |
tsdb.c16m64 × 3 |
403,200,000 | 20.13 GB | 90.4% |
tsdb.c32m128 × 3 |
806,400,000 | 40.58 GB | 90.3% |
tsdb.c16m64 × 6 |
806,400,000 | 40.64 GB | 90.3% |
实测查询吞吐(QPS)
| 查询类型 | 查询范围 | c2m8 × 3 |
c4m16 × 3 |
c8m32 × 3 |
c16m64 × 3 |
c32m128 × 3 |
c16m64 × 6 |
|---|---|---|---|---|---|---|---|
| 单实例最新健康状态 | 1 小时 | 200 | 253 | 999 | 1,332 | 2,040 | 600 |
| 单实例最近 20 行明细 | 1 小时 | 140 | 224 | 869 | 820 | 1,440 | 535 |
| 单实例内存汇总 | 1 小时 | 200 | 312 | 1,173 | 1,408 | 1,379 | 1,325 |
| 单实例内存汇总 | 24 小时 | 14 | 24 | 58 | 82 | 175 | 148 |
| 单主机 CPU 趋势 | 24 小时 | 14 | 20 | 44 | 54 | 115 | 125 |
| 集群磁盘趋势 | 24 小时 | 12 | 18 | 40 | 52 | 88 | 98 |
| 单主机 CPU 趋势 | 7 天 | 8 | 19 | 33 | 47 | 72 | 96 |
| 集群磁盘趋势 | 7 天 | 3 | 7 | 17 | 17 | 30 | 31 |
查询耗时(p50 / p95 / p99,毫秒)
| 查询类型 | 查询范围 | c2m8 × 3 |
c4m16 × 3 |
c8m32 × 3 |
c16m64 × 3 |
c32m128 × 3 |
c16m64 × 6 |
|---|---|---|---|---|---|---|---|
| 单实例最新健康状态 | 1 小时 | 18 / 161 / 315 | 49 / 264 / 426 | 15 / 72 / 109 | 23 / 27 / 32 | 18 / 21 / 23 | 60 / 103 / 130 |
| 单实例最近 20 行明细 | 1 小时 | 20 / 77 / 213 | 56 / 273 / 463 | 24 / 87 / 132 | 35 / 44 / 47 | 29 / 39 / 43 | 64 / 118 / 151 |
| 单实例内存汇总 | 1 小时 | 16 / 71 / 176 | 39 / 199 / 275 | 17 / 29 / 62 | 19 / 22 / 24 | 30 / 34 / 38 | 29 / 32 / 34 |
| 单实例内存汇总 | 24 小时 | 139 / 168 / 342 | 183 / 247 / 311 | 149 / 205 / 248 | 377 / 725 / 906 | 78 / 93 / 105 | 175 / 284 / 465 |
| 单主机 CPU 趋势 | 24 小时 | 194 / 527 / 961 | 240 / 353 / 478 | 297 / 524 / 676 | 188 / 266 / 319 | 140 / 178 / 201 | 332 / 541 / 672 |
| 集群磁盘趋势 | 24 小时 | 207 / 451 / 656 | 253 / 345 / 434 | 380 / 662 / 820 | 687 / 1,281 / 1,551 | 450 / 595 / 695 | 393 / 669 / 860 |
| 单主机 CPU 趋势 | 7 天 | 313 / 380 / 612 | 363 / 841 / 1,538 | 565 / 1,053 / 1,371 | 418 / 896 / 1,128 | 165 / 207 / 223 | 262 / 360 / 434 |
| 集群磁盘趋势 | 7 天 | 907 / 1,943 / 2,980 | 1,877 / 5,218 / 8,413 | 1,081 / 1,766 / 2,206 | 1,475 / 3,719 / 6,808 | 966 / 1,428 / 2,000 | 1,088 / 1,665 / 2,033 |
本场景使用 1 条大区错误趋势查询测试大范围扫描聚合能力。该查询按 region 覆盖约五分之一的实例,先按实例和时间分组计算 HTTP 5xx 与重启增量,再按时间汇总整个大区,分别测试 24 小时和 7 天窗口。该查询只访问 devops_service Measurement。
| 查询窗口 | 指标 | c2m8 × 3 |
c4m16 × 3 |
c8m32 × 3 |
c16m64 × 3 |
c32m128 × 3 |
c16m64 × 6 |
|---|---|---|---|---|---|---|---|
| 24 小时 | 覆盖行数 | 约 288,000 | 约 576,000 | 约 1,152,000 | 约 2,304,000 | 约 4,608,000 | 约 4,608,000 |
| 24 小时 | 单次查询耗时 | 218 ms | 303 ms | 351 ms | 538 ms | 642 ms | 1,182 ms |
| 7 天 | 覆盖行数 | 约 2,016,000 | 约 4,032,000 | 约 8,064,000 | 约 16,128,000 | 约 32,256,000 | 约 32,256,000 |
| 7 天 | 单次查询耗时 | 699 ms | 1,240 ms | 1,698 ms | 2,480 ms | 4,518 ms | 5,153 ms |
如何理解测试结果
- 先选择与自身数据模型最接近的场景,再比较每行指标点数、采样间隔、数据行数和查询窗口。
- 写入行数相同时,每行包含的 Field 越多,实际处理的指标点数量越多。评估写入能力时,应同时参考写入行数/秒和写入指标点数/秒。
- 查询 QPS 与查询耗时来自同一测试档。QPS 表示该负载下实际完成的查询数量,p95 和 p99 用于观察大多数请求及尾部请求的响应时间。
- 大范围扫描聚合查询的逻辑数据范围明显大于单实体和分组查询,表中的单次查询耗时适合用于了解相近数据规模下的大范围聚合性能。
为什么部分短窗口查询的 QPS 没有随规格提升?
本次 1~24 小时查询窗口均覆盖最近 24 小时内的近期数据。为持续承接写入,这部分数据可能分布在时间范围相互重叠的多个底层数据文件中。单次查询需要读取并合并的文件越多,查询开销越高;文件重叠程度还会随写入节奏和后台数据整理时序变化,因此短窗口查询的实测 QPS 可能出现波动,不保证随规格提升严格单调。
当查询窗口扩大到 7 天时,近期数据在整个查询范围中的占比下降,规格提升带来的处理能力增益更加明显。本次 7 天窗口测试中,同为三节点的各规格 QPS 总体随规格提升而增加。
适用范围
本次结果用于展示健康集群在代表性测试场景下的大致性能,不覆盖以下情况:
- 写入和查询同时处于高负载。
- 长时间连续运行下的稳定性。
- 节点故障、集群变配或扩缩容期间的性能。
- 长时间未访问数据的首次冷查询。
- 数据规模显著超出本文查询数据集。
- Field 中包含大量长字符串。
- 跨大区或跨租户关联查询。
业务上线前,建议根据与本文最接近的测试结果估算初始规格,并结合实际数据模型、峰值流量和查询方式留出容量余量。上线后可以通过 TSDB 监控页面持续观察写入速率、查询 QPS、查询延迟和节点资源使用情况,并根据业务增长调整集群配置。
评价此篇文章
