栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

TDengine写入性能估算

TDengine写入性能估算

看过TDengine介绍的都知道,TDengine写入性能很好。
没看过介绍的看 官网。

但是大部分人都不清楚TDengine到底能写到什么性能?自己的系统是不是还有提升性能的空间?

其实我也不知道。

不过这不妨碍我们根据硬件性能和TDengine的工作原理对其写入性能进行估算。

先上一张TDengine 架构图【图片来自TDengine官网】

根据上图我们可以大概看出会产生性能瓶颈的地方:
步骤1:数据从App传输到TDengine,瓶颈在网络带宽、网卡吞吐性能;
步骤2:数据写入WAL,瓶颈在磁盘IO;
步骤3:数据同步到slave,瓶颈在网络带宽和网卡吞吐性能【由于默认是异步模式,很难成为整体的瓶颈】;
步骤4:数据写入缓存,然后写入磁盘【此步骤会对数据进行压缩,主要瓶颈在CPU和内存大小】;
步骤5:返回操作结果,由于返回值比较小,因此不存在瓶颈。

综述所述,从硬件性能上考虑,最容易产生瓶颈的是网络带宽和磁盘IO。

由于网络传输的数据基本上是明文,同时WAL也没有对数据进行压缩。那么假设原始的数据量为A,那么网络传输的数据B则接近略大于A【加上网络包头和SQL语法】,写入WAL的数据C接近A,略小于B【对网络包进行了处理】。

为了方便计算则取A=B=C。

那么写入速度=min{A/带宽, A/磁盘IO}

举例说明:
千兆网络+机械硬盘+超NB内存和CPU 能达到什么写入速度?
千兆网络实际传输速度100MB/s
机械硬盘写入速度也差不多100MB/s
那么TDengine的写入速度应该在100MB/s 左右【不考虑CPU、内存的影响】

那么上述环境更换成SSD硬盘会提升写入性能吗?
显然不会,因为网络会成为瓶颈。

拓展1:

以上描述只适用于单节点环境,如何是集群环境,则情况更为复杂。
例如:

  1. 如果副本数为2,那么网络中除了App传输的数据外,还会有集群间同步的数据,数据量基本上翻一番。
  2. 如果App集中写入到集群中的某一台,那么多节点并不能带来性能的翻倍。
  3. 如果数据集中写入某个表,那么CPU个数再多,也没啥效果。

………………

拓展2:

如果内存不足会怎样?
官网上有如下描述:

TDengine默认walLevel 是1,也就是说WAL会先写入操作系统缓存,然后再写入磁盘。
那么如果内存不足时会发生什么?
阻塞!!

写入会被阻塞。
见 一张图解释dirty_background_ratio与dirty_ratio

那么内存需要多少才够??
有空再说。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/687430.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号