FlashTsDB时序数据库-性能测试
FLashDB基于开源模式开发,地址:https://github.com/amon1991/flashdb
1、测试环境
服务器类型 | 配置说明 | 数量 | 其他说明 |
---|---|---|---|
Linux | CPU:8core 2.30GHz 硬盘:200G 内存:16G | 3 | 操作系统:Centos 应用程序:zk,hadoop,hbase,redis |
Windows | CPU:8core 硬盘:500G 内存:12G | 1 | FlashTsDB,测试客户端 |
网络环境:千兆网卡,网线,路由器
2、写入测试
测点数 | 时间跨度 | 数据密度 | 总点数(万) | 插入时间(ms) | 占用空间 |
---|---|---|---|---|---|
1 | 1y | 1min/point | 52.56 | 2276 | - |
10 | 1y | 1min/point | 525.6 | 16055 | 1065MB |
100 | 1y | 1min/point | 5256 | 147253 | 11.1GB |
1000 | 1y | 1min/point | 52560 | 1597974 | 15.45GB |
如上表所示,100点和1000点占用空间差距不大,原因在于100点的占用空间是写入后立即统计的,而1000点的占用空间是写入后一段时间后统计的,在这段时间中Hbase自动进行了一些数据压缩处理和磁盘释放动作。
另外,测试环境使用的是千兆网卡,网线,路由器等设备,进行写入测试时程序占用40%左右的网络带宽。为了保证写入的稳定性,FLashTsDB限制了的写入吞吐量指标,实际对写入性能有极端要求的场景下,尚有优化的空间。
3、查询测试
查询测试分为历史数据查询和实时数据查询,历史数据查询细分为真实数据查询和插值数据查询。测试使用单线程和多线程2种模式进行。
3.1 历史真实数据:单线程
测点数 | 时间跨度 | 并发数 | 总点数(万) | 响应时间(ms) |
---|---|---|---|---|
50 | 1d | 1 | 4.15 | 447 |
50 | 10d | 1 | 41.5 | 1112 |
50 | 30d | 1 | 124.5 | 2364 |
3.2 历史真实数据:多线程
测点数 | 时间跨度 | 并发数 | 总点数(万) | 平均响应时间(ms) | 总响应时间(ms) |
---|---|---|---|---|---|
50 | 1d | 10 | 41.5 | 971 | 1336 |
50 | 1d | 100 | 415 | 5862 | 10727 |
50 | 1d | 1000 | 4150 | 51288 | 101187 |
– | – | – | – | – | – |
50 | 10d | 10 | 415 | 4311 | 6357 |
50 | 10d | 100 | 4150 | 29512 | 55702 |
– | – | – | – | – | – |
50 | 30d | 10 | 1245 | 11452 | 17202 |
50 | 30d | 50 | 6225 | 43710 | 81253 |
3.3 历史插值数据:单线程
测点数 | 时间跨度 | 并发数 | 总点数(万) | 响应时间(ms) |
---|---|---|---|---|
50 | 1d | 1 | 7.2 | 413 |
50 | 10d | 1 | 72 | 1096 |
50 | 30d | 1 | 216 | 2503 |
3.4 历史插值数据:多线程
测点数 | 时间跨度 | 并发数 | 总点数(万) | 平均响应时间(ms) | 总响应时间(ms) |
---|---|---|---|---|---|
50 | 1d | 10 | 72 | 1025 | 1391 |
50 | 1d | 100 | 720 | 5755 | 10614 |
50 | 1d | 1000 | 7200 | 51695 | 102076 |
– | – | – | – | – | – |
50 | 10d | 10 | 720 | 4507 | 6495 |
50 | 10d | 100 | 7200 | 30081 | 56450 |
– | – | – | – | – | – |
50 | 30d | 10 | 2160 | 11502 | 16694 |
50 | 30d | 50 | 10800 | 49875 | 82904 |
对于50测点,30天,50线程并发查询(总返回点数10800万)的极端场景下,每个线程的平均响应时间为49.875s,且无失败用例,FlashTsDB的查询性能十分优异。
3.5 实时数据查询:单线程
测点数 | 并发数 | 响应时间(ms) |
---|---|---|
100 | 1 | 23 |
1000 | 1 | 118 |
3.6 实时数据查询:多线程
测点数 | 并发数 | 平均响应时间(ms) | 总响应时间(ms) |
---|---|---|---|
100 | 10 | 96 | 100 |
100 | 100 | 530 | 576 |
100 | 1000 | 1158 | 1765 |
1000 | 10 | 575 | 580 |
1000 | 100 | 1633 | 1810 |
1000 | 1000 | 14431 | 16218 |
FlashTsDB的实时数据存储在Redis内存数据库中,实测结果性能较高,对于大部分的常用场景,可以实现秒级甚至毫秒级返回。