TDengine和InfluxDB的性能对比报告
前言
性能是用户在选择和使用时序数据库时非常关注的一个点。
为了准确体现TDengine的性能数据,我们策划了《TDengine和InfluxDB的性能对比》系列测试报告。
“一言不合上数据”,今天我们就先来分享一下两款数据库写入性能的对比。
为了更加具有说服力,本次的测试是基于InfluxDB此前与Graphite的性能对比中使用过的场景和数据集的。(https://www.influxdata.com/blog/influxdb-outperforms-graphite-in-time-series->)
经过多方准备与反复测试后,我们得出的结论是:
1.在InfluxDB发布的自己优的条件下,TDengine的写入速度是它的2倍。
2.当设备数放大到1000的时候,TDengine的写入速度是InfluxDB的5.2倍。
此外,除了给出测试结果,我们还有一个小目标——那就是按照文中的步骤和配置,所有阅读本文的开发人员或者架构师都可以复现出同样的过程与结果。我们认为,只有通过这样得来的测试报告才是有价值的测试报告。
正文
InfluxDB是一个用Go语言编写的开源时序数据库。其核心是一个自定义构建的存储引擎,它针对时间序列数据进行了优化,是目前为流行的时间序列数据库,在DB-Engines的时序数据库榜单中稳居。
TDengine是一款集成了消息队列,数据库,流式计算等功能的物联网大数据平台。该产品不依赖任何开源或第三方软件,拥有完全自主知识产权,具有高性能、高可靠、可伸缩、零管理、简单易学等技术特点。和InfluxDB相比,TDengine是当前时序数据库领域中一匹势头正劲的黑马。
接下来,我们正式进入测试环节。
一. 基础信息如下:
TDengine | InfluxDB | |
简介 | 一款集成了消息队列,数据库,流式计算等功能的物联网大数据平台 | 被设计用来做时间序列、事件和指标数据管理的一款时序数据库 |
官网 | https://www.taosdata.com/cn/ | https://www.influxdata.com |
开发语言 | C | Go |
测试版本 | 2.0.18.0 | 1.8.4 |
下载方式 | 涛思官网 | influxdata |
写入方式 | cgo(go1.16) | rest |
本次测试使用的数据集是为DevOps监控指标案例建模的数据集。在这个场景中,一组服务器需要定期报告系统和应用程序的指标,具体实现是:每10秒在一台服务器上的9个子系统(CPU、内存、磁盘、磁盘I/O、内核、网络、Redis、PostgreSQL和Nginx)上采样100个值。为了更好的完成关键指标的对比,在与Graphite的该次对比中,InfluxDB选择了一个周期为24小时,设备为100台的设定。因此,本次的TDengine和InfluxDB对比测试也是重新使用了这个相对适中的部署。
重要参数如下图,在上文链接中均可见:
二. 环境准备
为了方便大家复现,我们所有的测试都是在运行Ubuntu 20.10的两台azure虚拟机上进行的,配置如下:
标准 E16as_v4 ©AMD EPYC 7452(32-Core Processor 2345.608 MHz,16vCPU, 128GB RAM, 5000 IOPS SSD 1024GB) 用于数据库服务端。
标准 F8s_v2 instance type ©Intel(R) Xeon(R) Platinum 8272CL (2.60GHz ,8vCPU,16 GB RAM)用于数据库客户端。
值得注意的是虽然上面服务端CPU显示为32核,但是云服务只分给16个processor。
三. 具体测试方法与步骤:
我们只要按照如下方式操作便可复现本次测试结果:
1.整体规划:
服务端机器需要安装Influxdb和TDengine服务端;客户端机器需要安装TDengine客户端(版本同为2.0.18)和go语言环境,以及从github上下载性能测试脚本并运行。
2.安装准备:
1) TDengine安装方式(包含客户端):
A. TDengine安装包下载
B. TDengine安装步骤
2) Influxdb安装方式:
Influxdb安装包下载以及安装步骤
3) go1.安装方式:
wget https://studygolang.com/dl/golang/go1.16.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.16.linux-amd64.tar.gz
添加环境变量/etc/profile export PATH=$PATH:/usr/local/go/bin
source /etc/profile
部署完TDengine、InfluxDB与Go语言环境,确保两台服务器的数据库连接正常使用正常(建库删库写入查询功能均需测试,建库之后立即删除,如有问题立刻排查,为确保权限问题不打扰环境测试,可以全程使用root用户)
此外,在测试中应该注意以下几点:
1)fsync的设置要保持同步,InfluxDB默认是无延时的fsync,需要修改TDengine的这两个参数:walLevel=2 ,fsync=0才能达到相同的配置环境。后续的一切测试均是在这个设置条件下完成。
2)TDengine的客户端要把maxSQLLength开到大1048576。
3.从github取下代码:
su - root
mkdir /comparisons
cd /comparisons
git clone https://github.com/taosdata/timeseriesdatabase-comparisons
相关文章