当前位置: 首页 > article >正文

时序数据库 InfluxDB 3.0 版本性能实测报告:写入吞吐量提升效果验证

亮点总结:

TSBS 测试表明,对于少于 100 万台设备的数据集,InfluxDB OSS 3.0 的数据写入速度实际上比 InfluxDB OSS 1.8 更慢。

对于 100 万台及以上设备的数据集,InfluxDB OSS 3.0 的数据写入性能才开始超过 InfluxDB OSS 1.8。

InfluxDB OSS 3.0 的数据写入接口与 InfluxDB 1.8 并不兼容,用户无法顺利迁移。

早在 2023 年,在 InfluxDB 3.0 推向企业用户时,官方曾宣称其相比旧版本有显著的性能提升。为了验证这一说法,InfluxData 还发布了一份基准测试报告,对比了 InfluxDB 3.0 企业版与 InfluxDB OSS 1.8,结果显示 InfluxDB 3.0 在各方面表现出色。

我们对这个版本非常好奇,但作为非企业用户,只能和大多数人一样等待了一年半,直到今年 1 月 InfluxDB OSS 3.0 终于公开发布。虽然目前的版本仅是“public alpha”,但这并不妨碍我们对其性能抱有很高的期待,毕竟 InfluxData 已经第二次彻底重构产品架构。对于那些希望平稳升级的用户来说,这无疑是个不小的冲击,更何况官方还直接放弃了 Flux 语言。如果 InfluxDB 3.0 无法在性能上带来真正的突破,那这样的升级又有何意义?

实际测试:InfluxDB 3.0 真的更快吗?

为了验证 InfluxDB 3.0 是否真的如官方宣传般带来巨大性能提升,我们采用 Time Series Benchmark Suite (TSBS) 进行对比测试。TSBS 由 InfluxData 最初开发,目前由 Timescale 维护,是业界公认的时序数据库基准测试工具。理论上,InfluxDB 3.0 仍支持 InfluxQL 和传统的 Line Protocol,因此应该能够直接运行针对 1.8 版本的测试套件。然而,在实际测试过程中,我们遇到了多个兼容性问题,不得不寻找替代方案,这部分将在后续介绍测试方法的章节中详细说明。

我们之所以选择 TSBS 作为测试工具,不仅因为它比 QuestDB 之前发布的简单基准测试更全面,还因为它提供了一个公开透明的测试框架,让不同数据库的对比变得更加公平。然而,测试结果却让我们大跌眼镜。

TSBS 提供了两个测试场景:DevOps 监控(CPU 监测)和物联网(IoT,车辆跟踪)。在测试中,我们使用 TSBS 生成数据,并分别写入 InfluxDB 3 0.1.0(修订版 v2.5.0-14345)、InfluxDB OSS 1.8 和 TDengine OSS 3.3.5.8。以下图表展示了各系统在不同测试场景下的写入性能(指标数/秒)。

TSBS DevOps 用例:

TSBS IoT 用例:

测试结果分析:InfluxDB 3.0 写入提升远不及 45 倍

在最大规模的数据集中,InfluxDB 3.0 在 DevOps 场景下的写入性能提升了 5.4 倍,在物联网(IoT)场景下提升了 4.9 倍。这与 InfluxData 基准测试报告中声称的“写入吞吐量提升 45 倍”相去甚远。更令人意外的是,在设备数量不超过 10 万的场景下,InfluxDB 1.8 的写入性能竟然优于 InfluxDB 3.0。这表明,InfluxDB 3.0 所谓的性能提升,要么仅适用于企业版,要么在独立测试中并不成立。

从测试结果我们也可以看到,TDengine 的写入速度比 InfluxDB 3.0 快 4.4 至 11.3 倍,相较 InfluxDB 1.8 更是提升了 3.1 至 22.8 倍。这进一步证明,即便 InfluxDB 3.0 进行了彻底重构,其写入性能仍难以与 TDengine 相媲美。

TSBS 适配已完成,欢迎查看源码自行测试

本次测试在一台 40 核、256GB 内存的服务器上进行。该服务器的配置略低于 InfluxDB 官方基准测试环境,高于 QuestDB 的测试环境,但硬件差异对整体性能趋势的影响可忽略不计。

由于 TSBS 尚未针对 InfluxDB 3.0 进行更新,我们不得不对其进行一定的修改。为确保公平性,我们尽量减少了改动,但仍需解决以下问题:

  • 数据库管理指令不兼容 TSBS 运行 InfluxDB 1.8 时使用的 SHOW、CREATE、DELETE 数据库命令在 InfluxDB 3.0 中已不可用。因此,我们改用 InfluxDB v3 API:

    • GET /api/v3/configure/database 查询数据库

    • POST /api/v3/configure/database 创建数据库

    • DELETE /api/v3/configure/database 删除数据库

  • 多线程写入失败 在使用多个并发写入进程时,InfluxDB 3.0 频繁出现写入失败,并报错 Invalid write response (status 409): catalog update error: table already exists。为解决此问题,我们修改了 TSBS,使其在遇到该错误时自动重试,而不是直接退出。此外,数据写入采用 InfluxDB 3.0 提供的 /api/v3/write_lp 接口。

现在所有修改均已提交到我们维护的 TSBS 分支,任何人都可以查看源码并自行运行测试。

结语

尽管 InfluxDB 3.0 经过全面重构,并宣传性能显著提升,但从写入性能来看,至少对开源用户而言,这一承诺并未兑现。测试结果表明,其写入性能仅在超大规模数据集下略优于 InfluxDB 1.8,而对于大多数用户,尤其是设备数少于 100 万场景下,性能反而有所下降。即便目前仍处于 Public Alpha 阶段,但该版本已开发一年多的时间,它的表现真的值得开源社区期待吗?

此外,InfluxDB 3.0 采用了全新架构,导致用户无法顺利从 1.8 版本升级。对于开源用户而言,这次升级是否值得,也确实需要慎重考虑。尤其是当数据写入性能成为瓶颈时,从目前的测试结果来看,InfluxDB 3.0 并未能提供令人信服的解决方案。相比之下,TDengine 始终坚持对开源社区的承诺,不仅提供高性能、全功能的软件,还确保所有用户都能公平获取和使用。面对时序数据存储与处理的挑战,选择一款真正高效、稳定的数据库,才是更明智的决定。

相关文章:

时序数据库 InfluxDB 3.0 版本性能实测报告:写入吞吐量提升效果验证

亮点总结: TSBS 测试表明,对于少于 100 万台设备的数据集,InfluxDB OSS 3.0 的数据写入速度实际上比 InfluxDB OSS 1.8 更慢。 对于 100 万台及以上设备的数据集,InfluxDB OSS 3.0 的数据写入性能才开始超过 InfluxDB OSS 1.8。…...

Pytest自动化框架

目录 Pytest简单介绍 第一章:Pytest console命令 1.pytest -v 参数 -h 参数 其他一些参数:仅供参考 第二章. mark标记 pytest.mark.skip pytest.mark.skipif pytest.mark.xfail ​编辑 pytest.mark.patametrize 单个参数 多个参数 直接…...

从零开始:使用 Python 实现机器学习的基础与实践

文章大纲: 引言 机器学习的定义与应用场景。Python 在机器学习领域的优势。本文目标:通过 Python 实现一个简单的机器学习项目。 环境准备 安装 Python 和必要的库(如 NumPy、Pandas、Scikit-learn)。使用 Jupyter Notebook 或 V…...

ubuntu22.04安装RAGFlow配合DeepSeek搭建本地知识库

一、简介 RAGFlow 是一个基于对文档的深入理解的开源 RAG(检索增强生成)引擎。当与 LLM 集成时,它能够提供真实的问答功能,并以来自各种复杂格式数据的有根据的引用为后盾。 二、安装 1.环境要求 CPU ≥ 4 核 (x86…...

【银河麒麟高级服务器操作系统实例】虚拟机桥接网络问题分析及处理

更多银河麒麟操作系统产品及技术讨论,欢迎加入银河麒麟操作系统官方论坛 https://forum.kylinos.cn 了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer…...

springboot011基于springboot的课程作业管理系统(源码+包运行+LW+技术指导)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得难了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等,你想解决的问题,今天…...

Android 屏幕适配 Tips

概念 屏幕尺寸:屏幕的对角线的长度屏幕分辨率:屏幕分辨率是指在横纵向上的像素点数,单位是px,1px1个像素点。一般以纵向像素x横向像素,如1960x1080屏幕像素密度:每英寸上的像素点数,单位是dpi …...

使用 Arduino 的 WiFi 控制机器人

使用 Arduino 的 WiFi 控制机器人 这次我们将使用 Arduino 和 Blynk 应用程序制作一个 Wi-Fi 控制的机器人。这款基于 Arduino 的机器人可以使用任何支持 Wi-Fi 的 Android 智能手机进行无线控制。 为了演示 Wi-Fi 控制机器人,我们使用了一个名为“Blynk”的 Android 移动应…...

使用 Deepseek + kimi 快速生成PPT

前言 最近看到好多文章和视频都在说,使用 Deepseek 和 kimi 能快速生成精美的 ppt,毕竟那都是别人说的,只有自己尝试一次才知道结果。 具体操作 第一步:访问 deepseek 我们访问 deepseek ,把我们想要输入的内容告诉…...

XHR请求解密:抓取动态生成数据的方法

在如今动态页面大行其道的时代,传统的静态页面爬虫已无法满足数据采集需求。尤其是在目标网站通过XHR(XMLHttpRequest)动态加载数据的情况下,如何精准解密XHR请求、捕获动态生成的数据成为关键技术难题。本文将深入剖析XHR请求解密…...

C#程序加密与解密Demo程序示例

目录 一、加密程序功能介绍 1、加密用途 2、功能 3、程序说明 4、加密过程 5、授权的注册文件保存方式 二、加密程序使用步骤 1、步骤一 ​编辑2、步骤二 3、步骤三 4、步骤四 三、核心代码说明 1、获取电脑CPU 信息 2、获取硬盘卷标号 3、机器码生成 3、 生成…...

DAV_postgresql_4-pg安装

一、安装环境 操作系统:Red Hat Enterprise Linux 8 数据库:PostgreSQL 15.5 二、安装步骤 2.1、查看操作系统版本 # cat /etc/redhat-release 2.2、下载并解压安装包 $wget https://ftp.postgresql.org/pub/source/v15.0/postgresql-15.5.tar.gz…...

【一文学会 HTML5】

目录 HTML概述基本概念HTML 发展历程HTML 基本结构 网页基本标签标题标签&#xff08;<h1> - <h6>&#xff09;段落标签&#xff08;<p>&#xff09;换行标签&#xff08;<br>&#xff09;水平线标签&#xff08;<hr>&#xff09;注释&#xff0…...

Redis 内存淘汰策略深度解析

Redis 作为高性能的内存数据库&#xff0c;其内存资源的高效管理直接关系到系统的稳定性和性能。当 Redis 的内存使用达到配置的最大值&#xff08;maxmemory&#xff09;时&#xff0c;新的写入操作将触发内存淘汰机制&#xff08;Eviction Policy&#xff09;&#xff0c;以释…...

除了合并接口,还有哪些优化 Flask API 的方法?

除了合并接口&#xff0c;还有许多其他方法可以优化 Flask API&#xff0c;以下从性能优化、代码结构优化、安全性优化、错误处理优化等方面详细介绍&#xff1a; 性能优化 1. 使用缓存 内存缓存&#xff1a;可以使用 Flask-Caching 扩展来实现内存缓存&#xff0c;减少对数…...

MC9S12单片机的内存映射机制

地址空间 这是个16位的单片机。CPU的寻址空间最大为2^1664K。 这个64K是包括外设、RAM、EEPROM、和FLASH的。现在程序越来越大&#xff0c;64K的空间肯定是不够用的。因此&#xff0c;需要扩展。 扩展方法就是&#xff1a;分页。 把原来的64K空间&#xff0c;划分一块出来&a…...

C++二叉搜索树代码

代码一&#xff0c;对应力扣二叉搜索树中的检索&#xff0c;代码见下 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(i…...

计算机毕业设计SpringBoot+Vue.js科研项目验收管理系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

Docker Compose企业示例

利用容器编排完成haproxy和nginx负载均衡架构实施 1.mkdir docker.test 2.touch haproxy.yml 3.mkdir /var/lib/docker/volumes/conf 4.dnf install haproxy -y --downloadonly --downloaddir/xixi&#xff1a;下载内容到/xixi目录下 5. rpm2cpio haproxy-2.4.22-4.el9.x8…...

【Linux网络#11】: 传输层协议 TCP

&#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;Linux—登神长阶 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f49e; &#x1f49e; &#x1f49e; 生活总是不会一帆风顺&#x…...

19. 大数据-技术生态简介

文章目录 前言一、Hadoop介绍1. 简介2. Hadoop发展史3. Hadoop现状 二、Hadoop特性1. Hadoop国外应用2. Hadoop国内应用 三、Hadoop架构变迁1. 发行版本2. Hadoop架构变迁(1.0-2.0变迁)3. Hadoop架构变迁(3.0新版本)4. 综述 四、技术生态体系 前言 大数据&#xff08;Big Data…...

Android Native 之 文件系统挂载

一、文件系统挂载流程概述 二、文件系统挂载流程细节 1、Init启动阶段 众所周知&#xff0c;init进程为android系统的第一个进程&#xff0c;也是native世界的开端&#xff0c;要想让整个android世界能够稳定的运行&#xff0c;文件系统的创建和初始化是必不可少的&#xff…...

C++蓝桥杯基础篇(八)

片头 嗨~小伙伴们&#xff0c;大家好&#xff01;今天我们一起来学习C蓝桥杯基础篇&#xff08;八&#xff09;&#xff0c;练习相关字符串的习题&#xff0c;准备好了吗&#xff1f;Are you ready? Lets go! 第1题 字符串中的数字个数 这道题&#xff0c;我们用字符数组或者…...

IDEA Generate POJOs.groovy 踩坑小计 | 生成实体 |groovy报错

一、无法生成注释或生成的注释是null 问题可能的原因&#xff1a; 1.没有从表里提取注释信息&#xff0c;修改def calcFields(table)方法即可 def calcFields(table) {DasUtil.getColumns(table).reduce([]) { fields, col ->def spec Case.LOWER.apply(col.getDataType().…...

音视频入门基础:RTP专题(14)——FFmpeg源码中,对H.264的各种RTP有效载荷结构的解析

一、引言 由《音视频入门基础&#xff1a;RTP专题&#xff08;10&#xff09;——FFmpeg源码中&#xff0c;解析RTP header的实现》可以知道&#xff0c;FFmpeg源码的rtp_parse_packet_internal函数的前半部分实现了解析某个RTP packet的RTP header的功能。而在解析完RTP head…...

2. 电脑主机上配置机器人环境(具身智能机器人套件)

操作步骤跟树莓派一致 1. 安装 Miniconda curl -O https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-aarch64.sh bash ~/Anaconda3-2024.10-1-Linux-aarch64.sh source ~/.bashrc conda config --set auto_activate_base True source ~/.bashrc2. 配置LeRobot …...

IDEA2023 使用枚举类型java: 非法字符: ‘\ufffd‘

一、异常&#xff1a; 二、原因 文件编码问题 IDE或文本编辑器的文件编码设置不正确&#xff0c;可能会导致在保存文件时引入了错误的字符。 三、解决 在IntelliJ IDEA中&#xff0c;你可以通过File -> Settings -> Editor -> File Encodings来设置。...

服务器python项目部署

角色&#xff1a;root, 其他用户应该也可以 1. 安装python3环境 #如果是新机器&#xff0c;尽量执行&#xff0c;避免未知报错 yum -y update python -v yum install python3 python3 -v2. 使用virtualenvwrapper 创建虚拟环境,并使用workon切换不同的虚拟环境 # 安装virtua…...

3.6 登录认证

登录功能 登录思路 联调测试 登录校验 问题&#xff1a;在未登录情况下&#xff0c;我们也可以直接访问部门管理、员工管理等功能。 登录标记 用户登录成功之后&#xff0c;每一次请求中&#xff0c;都可以得到该标记。 统一拦截 过滤器Filter拦截器Interceptor 会话技术 会…...

OpenBMC:BmcWeb connect读取http请求

OpenBMC:BmcWeb构造connect对象-CSDN博客 OpenBMC:BmcWeb server.run-CSDN博客 1.构造了connect对象后,通过connection->start()开始处理来自客户端的请求 //http\http_connection.hpp void start() {...startDeadline();readClientIp();boost::beast::async_detect_ssl…...