测试概述
本文档介绍 TDSQL Boundless HBase 兼容接口的性能测试结果。测试采用业界标准的 YCSB(Yahoo! Cloud Serving Benchmark)工具,覆盖多种典型业务场景,全面评估 TDSQL Boundless HBase 兼容接口在不同负载下的吞吐量和延迟表现。
测试环境
硬件配置
配置项 | 规格 |
CPU | 16核 |
内存 | 32GB |
节点数 | 4节点 |
存储类型 | 云盘 |
数据规模
参数 | 值 |
总数据行数 | 3亿行 |
列族数量 | 1个(单 CF) |
每行列数 | 100列 |
Value 大小 | 20Bytes |
分区数量 | 8 |
测试时长 | 300秒/测试项 |
软件版本
节点类型 | 版本 |
HyperNode | V21.6.3.0 |
测试场景说明
单列操作场景
场景 | 配置说明 |
GET 场景 | 3亿行基础数据,每行数据100列,value 为20bytes,查询区间3000万行,每次操作读取1列。 |
SCAN 场景 | 3亿行基础数据,每行数据100列,value 为20bytes,查询区间3000万行,每次范围读取1 ~ 50行,每行获取1列。 |
PUT 场景 | 3亿行基础数据,每行数据100列,value 为20bytes,插入区间3亿行,每次操作写入1列。 |
YCSB 标准 Workload 场景
场景 | 读写比例 | 配置说明 |
Workload A | 50% GET + 50% PUT | 3亿行基础数据,每行数据100列,value 为20bytes,数据区间3亿行,GET 和 PUT 固定访问 f0 ~ f19共20列。 |
Workload C | 100% GET | 3亿行基础数据,每行数据100列,value 为20bytes,数据区间3亿行,GET 操作固定访问 f0 ~ f19 共20列。 |
Workload E | 95% SCAN + 5% PUT | 3亿行基础数据,每行数据100列,value 为20bytes,数据区间3亿行,Scan 和 PUT 固定访问 f0 ~ f19 共20列,Scan 范围1 ~ 100行。 |
参数配置
测试中对 HBase Client 进行了以下参数优化,以充分发挥系统性能:
<property><name>hbase.client.ipc.pool.size</name><value>16</value><!-- RPC 连接池大小 --></property><property><name>hbase.client.ipc.pool.type</name><value>RoundRobinPool</value></property><property><name>hbase.client.max.total.tasks</name><value>16</value><!-- 客户端最大并发任务数 --></property><property><name>hbase.client.max.perserver.tasks</name><value>16</value><!--每个 RegionServer 的最大并发任务数--></property>
测试结果
GET 场景(单列点查)
场景配置: 3亿行基础数据,每行数据100列,value 为20bytes,查询区间3000万行,每次操作读取1列。
线程数 | QPS | 平均延迟(μs) | 50% 延迟(μs) | 95% 延迟(μs) | 99% 延迟(μs) | CPU |
128 | 34,306 | 3,725 | 1,525 | 10,055 | 12,815 | 34% |
1024 | 34,555 | 29,565 | 3,069 | 98,175 | 125,119 | 38% |
SCAN 场景(范围查询)
场景配置: 3亿行基础数据,每行数据100列,value 为20bytes,查询区间3000万行,每次范围读取1 ~ 50行,每行获取1列。
线程数 | QPS | 平均延迟(μs) | 50% 延迟(μs) | 95% 延迟(μs) | 99% 延迟(μs) | CPU |
128 | 7,725 | 16,548 | 15,919 | 29,967 | 37,343 | 93% |
1024 | 8,281 | 123,418 | 112,383 | 186,623 | 216,447 | 97% |
PUT 场景(单列写入)
场景配置: 3亿行基础数据,每行数据100列,value 为20bytes,插入区间3亿行,每次操作写入1列。
线程数 | QPS | 平均延迟(μs) | 50% 延迟(μs) | 95% 延迟(μs) | 99% 延迟(μs) | CPU |
128 | 69,372 | 1,841 | 1,771 | 2,521 | 3,523 | 56% |
1024 | 100,668 | 10,146 | 5,787 | 26,319 | 31,263 | 97% |
Workload A(50% GET + 50% PUT)
场景配置: 3亿行基础数据,每行数据100列,value 为20bytes,数据区间3亿行,GET 和 PUT 固定访问 f0 ~ f19 共20列。
128线程
操作 | QPS | 平均延迟(μs) | 50% 延迟(μs) | 95% 延迟(μs) | 99% 延迟(μs) | CPU |
READ | 47,006 | 2,419 | 1,764 | 4,851 | 17,183 | 68% |
UPDATE | | | | | | |
1024线程
操作 | QPS | 平均延迟(μs) | 50% 延迟(μs) | 95% 延迟(μs) | 99% 延迟(μs) | CPU |
READ | 49,453 | 15,761 | 7,231 | 58,015 | 120,447 | 76% |
UPDATE | | | | | | |
Workload C(100% GET)
场景配置: 3亿行基础数据,每行数据100列,value 为20bytes,数据区间3亿行,GET 操作固定访问 f0 ~ f19 共20列。
线程数 | QPS | 平均延迟(μs) | 50% 延迟(μs) | 95% 延迟(μs) | 99% 延迟(μs) | CPU |
128 | 67,755 | 1,885 | 1,447 | 4,475 | 5,987 | 63% |
1024 | 66,975 | 15,250 | 3,855 | 47,679 | 62,943 | 67% |
Workload E(95% SCAN + 5% PUT)
场景配置: 3亿行基础数据,每行数据100列,value 为20bytes,数据区间3亿行,Scan 和 PUT 固定访问 f0 ~ f19 共20列,Scan 范围1 ~ 100行
128线程
操作 | QPS | 平均延迟(μs) | 50% 延迟(μs) | 95% 延迟(μs) | 99% 延迟(μs) | CPU |
SCAN | 13,317 | 9,918 | 9,439 | 16,975 | 21,871 | 81% |
INSERT | | | | | | |
1024线程
操作 | QPS | 平均延迟(μs) | 50% 延迟(μs) | 95% 延迟(μs) | 99% 延迟(μs) | CPU |
SCAN | 13,727 | 77,140 | 68,799 | 121,855 | 141,823 | 84% |
INSERT | | | | | | |