“你们的数据库性能怎么样?”

“能不能满足我们的业务?”

“和其他数据库对比性能有优势么?”

......

客户在使用数据库时常有这样的担心和疑问。


本文从测试方案、测试工具、测试场景、测试结果等方面详细介绍了GaussDB(for Influx)和开源InfluxDB集群在X86架构下的性能测试情况。测试结果显示,GaussDB(for Influx)较企业版InfluxDB集群能提供更高的写入性能、更低的访问延迟以及更高的数据压缩率。

测试方案​

资源配置​

服务端配置

产品名称

规格

存储

架构

GaussDB(for Influx)

4U16G 2节点

100G

集群架构

开源企业版InfluxDB

4U16G 3节点

100G

集群架构


测试工具​

测试工具为开源性能工具TS-benchMark

测试设计​

测试模型​

本次测试采用风力发电数据模型,每个风场50个设备每个设备50个传感器,1个风场1个线程,通过load数据的线程数来控制时间线的大小,通过收集时间的长短来控制数据量。

模型每条数据大小约为24字节,具体的类型如下:

Timestamp | farm | device | sensor | value

测试数据量​

测试数据分为两个场景,大数据量和小数据量,具体数据量如下:

场景

时间线

数据量

小数据量

5000

4亿

大数据量

250万

GaussDB(for Influx) 150亿

企业版InfluxDB 47亿

企业版InfluxDB在插入到47亿数据时OOM以下性能对比都基于此数据量

测试场景​

数据写入场景​

  • batch_size(每个批次写入的数据量) 固定为50,线程数分别从1、2、4、8、16、32、64、128、256、512 递增
  • 线程数(客户端并发请求的连接数)固定为8, batch_size分别从50、100、150、200、250、300 递增

数据查询场景​

单线程进行不同语句的查询,并统计其时延信息。

第一类查询:所有TAG查询

select *

from sensor

where f='f1' and d='d2' and s='s1' and time>=1514768400000000000 and time<=1514772000000000000

第二类查询 + VALUE查询

select *

from sensor

where f='f1' and s='d2' and value>=3.0 and time>=1514768400000000000 and time<1514854800000000000

第三类查询:聚合查询

select mean(value)

from sensor

where f='f1' and s='s1' and time>=1514768400000000000 and time<=1514854800000000000 group by f,d,s,time(1h)

第四类查询:或条件查询

select *

from sensor

where f='f1' and (s='s1' or s='s2' or s='s3' or s='s4' or s='s5') and time>=1514768400000000000 and time<=1514769150000000000

第五类查询:单个TAG查询

select *

from sensor

where f='f1' and time>=1514768400000000000 and time<=1514769150000000000

测试结果分析​

写入吞性能比对​

在小数据量场景下,GaussDB(for Influx)的写入性能是企业版InfluxDB的13倍左右,在大数据量的场景下可以达到1.8倍左右。

华为云数据库GaussDB(for Influx)与开源企业版性能对比_大数据量


查询性能对比​

1第一类查询(所有TAG查询):无论是大数据量还是小数据量场景下GaussDB(for Influx)的吞吐量是开源InfluxDB企业版的2倍左右。

华为云数据库GaussDB(for Influx)与开源企业版性能对比_企业版_02


2第二类查询(TAG + VALUE查询):在小数据量场景下,开源InfluxDB企业版性能高于GaussDB(for Influx)GaussDB(for Influx)在大数据量和小数据量场景下性能基本持平

华为云数据库GaussDB(for Influx)与开源企业版性能对比_大数据量_03


3)第三类查询(聚合查询):GaussDB(for Influx)查询性能明显优于开源InfluxDB企业版,在小数据量场景下是开源版本的14倍大数据量下也是开源版本的8倍左右。

华为云数据库GaussDB(for Influx)与开源企业版性能对比_大数据量_04


4)第四类查询(或条件查询):GaussDB(for Influx)查询性能在两种场景下比较稳定开源企业版InfluxDB在两种场景下差异较大GaussDB(for Influx)在小数据量场景下表现于开源版在大数据量场景下低于开源版

华为云数据库GaussDB(for Influx)与开源企业版性能对比_企业版_05


5第五类查询单个TAG查询):GaussDB(for Influx)查询性能在两种场景下比较稳定在大数据量场景下低于开源版

华为云数据库GaussDB(for Influx)与开源企业版性能对比_数据_06


数据压缩率对比​

在250万时间线场景下GaussDB(for Influx)导入了151亿条数据导入前数据大小为337.5G导入后为49.8G压缩率为6.8开源企业版导入了47亿条数据导入前105G导入后21.3G压缩率为4.9GaussDB(for Influx)压缩率是开源企业版的1.4倍左右

Influx引擎采用LSM tree架构随着后台compaction的进行压缩率会进一步提升当前数据对比是数据刚导入时的结果

总结​

在GaussDB(for Influx)2节点对比开源版3节点场景下,GaussDB(for Influx)给客户带来了更高的写入能力、更稳定的查询能力、更高的压缩率。GaussDB(for Influx)写入能力在小数据量场景下是开源企业版的13倍在大数据量场景下是开源企业版的1.8倍查询能力在两种场景下表现稳定在大部分查询场景下优于开源企业版;在压缩率方面,同样数据模型下,高出开源版本40%。

除了以上优势外,GaussDB(for Influx)还在集群化、冷热分级存储、高可用方面也做了深度优化,能更好地满足时序应用的各种场景。