首页 > 其他分享 >与 TDengine 性能直接相关——3.0 的落盘机制优化及使用原则

与 TDengine 性能直接相关——3.0 的落盘机制优化及使用原则

时间:2023-07-03 14:13:11浏览次数:41  
标签:TDengine 缓冲 数据库 落盘 3.0 优化

许多用户会有一个疑问,“落盘”俩字听起来就很底层,似乎无法和手头的性能问题联系到一起,本篇文章的目的就是让大家对它们俩建立起直观的认识。

写到数据库的数据总要保存起来——所以时序数据库(Time Series DatabaseTDengine 中经常提到的“落盘”,其实指的是内存中的数据持久化到存储的过程。在 TDengine 中,对 vnode 的写入流程如下。(不了解vnode的用户,建议先移步 https://docs.taosdata.com/tdinternal/arch/

根据图中所示:内存和硬盘发生持久化的操作有两部分,本文的“落盘”指的是右侧标红部分,即是时序数据持久化到 $DataDir/vnode/vnodeX/tsdb/ 下数据文件的过程。

一 . 触发逻辑变化:

熟悉 2.0 版本的朋友们都知道,触发落盘的机制有二:

  1. 写满该 vnode 三分之一的缓冲池(建库时指定,2.0 为建库参数 cache * blocks 的值, 3.0 替换为建库参数 buffer);
  2. 数据库服务进程停止的时候;

在 3.0 版本,触发落盘的机制变为: 

  1. 写满该 vnode 三分之一的缓冲池之后,超过“落盘最小间隔”即可自动落盘。出于安全考虑,该参数没有提供可配置选项;
  2. 数据库服务进程停止的时候;(3.0.4.0 版本数据库单副本情况下提供)
  3. 提供手动落盘的命令,flush database dbname。

二.架构优化:

那么它具体都达成了哪些优化呢?

首先,在设计上 3.0 对落盘功能和过期数据检测做了解耦。

在 2.0 的时候,只有数据库在落盘之后,才会触发比对数据文件的时间范围清理过期的文件数据的机制,从而释放硬盘空间,详情可参考:https://mp.weixin.qq.com/s/uJEQwN0NnmSTBAMOecAtoA

自 3.0 版本开始,数据库的过期文件清理依靠 trim database dbname 的命令来完成。到 3.0.3.0 版本,又增加了定时检测来自动执行 trim database。这让 3.0 的磁盘空间回收变得更加高效及时。

其次,提供手动落盘的命令。令落盘控制更加灵活。此外,由于时序数据的压缩是发生在落盘阶段的,因此对于我们统计数据的磁盘实际占用,计算压缩率都有很大的帮助。

三.配置优化:

1.落盘时,内存中的行式存储的时序数据会被转为列式存储的数据块,然后执行压缩。因此,形成数据块的过程直接影响着后续的磁盘占用和查询效率,这也是 TDengine 性能优化最核心的部分之一,它是由数据库的一系列参数决定的,具体可参考文章(文章:关于 3.0 和 2.0 的数据文件差异以及性能优化思路

2.TDengine 执行落盘的任务是异步的,这样当写满 1 块缓冲池后,就可以无延迟地利用起来剩余的 2 块缓冲池。但是如果 buffer 设置太小,就会导致落盘仍未结束时,但是已经用光了所有三块缓冲池。这个时候数据库就只能进入等待阶段,写入查询都会受到影响,直到可用的缓冲池返回。

可以看出,在这个环节中,缓冲池的大小是十分重要的,这个值由建库时的 buffer 参数指定,建库后可修改(具体可参考:https://docs.taosdata.com/taos-sql/database/)。

3.另外,如果是落盘线程这一侧到达瓶颈导致没有可用的缓冲池返回,则可以选择增加 numOfCommitThreads 参数值,这个参数代表每个节点上的落盘线程数量,默认等于二分之一的cpu核数。

具体优化方式需要结合自己的实际情况决定,如写入频率、表宽、性能需求等等。并没有一项固定参数的单独调试就可以调试到最优状态,大家可以结合历史多期文章自行调试,也可以直接联系企业版团队做定制化的优化方案。

标签:TDengine,缓冲,数据库,落盘,3.0,优化
From: https://www.cnblogs.com/taosdata/p/17522746.html

相关文章

  • 数据结构和算法-2023.07.01
    数据结构杂记回忆以前的一些零散的知识点杂谈......
  • 名人名言_2023.07.01-
    日常学习名人名言,激励自己......
  • CS7530CC支持PD3.0,双C口协议芯片,20-35W功率
    协议支持:1,USB电源PD3.0固定PDO2,USB电源PDPPSPDO3,支持20W~35WPDO配置4,USBTYPE-C,CC-逻辑5V/3A5,支持双口TypeC快速充电与单电源6,2kVHBM和1kVCDMESD静电防护等级7,40°C~+125°C工作温度,符合RoHS和无卤素快充协议芯片的作用:1、快速充电管理:快充协议芯片能够根据充电设备和电源......
  • multisim13.0正式版下载-multisim13汉化正式版下载分享
    Multisim官方版是一款优秀专业的SPIC仿真的标准环境,它拥有许多很强悍的功能,为用户准备了一个完备好用的设计环境和可交互的仿真界面。Multisim支持显示动态原件,能够仿真3D效果的电路、虚拟仪表,支持分析图形显示窗口等等功能。[下载地址]:后台私信我Multisim软件是一款功能强大的电路......
  • SpringBoot3.0最新深入浅出从入门到项目实战,突出Web应用痛点解决方案
    SpringBoot3.0最新深入浅出从入门到项目实战,突出Web应用痛点解决方案SpringBoot已经成为Java开发中最流行的框架之一,它提供了一种快速构建、易于扩展的方式,使开发人员能够更加专注于业务逻辑而不是繁琐的配置。而最新的SpringBoot3.0版本将进一步改善开发体验,并提供更多的解决方......
  • 数据结构和算法-2023.06.30
    动态链表的生成和初衷......
  • TDengine 发布 IoT 场景下 3.0 性能对比分析报告,全方位超越 InfluxDB & TimescaleDB
    6月26日,涛思数据旗下时序数据库(TimeSeriesDatabase)TDengine正式发布IoT场景下TDengine3.0性能对比分析报告,该报告在IoT场景下从数据写入、压缩和查询等维度,对比了TDengine与市场其他流行的时序数据库产品的性能差异,其中所有测试均在标准化条件下使用公开数据完成。......
  • TDengine 发布 IoT 场景下 3.0 性能对比分析报告,全方位超越 InfluxDB & TimescaleDB
    6月26日,涛思数据旗下时序数据库(TimeSeriesDatabase)TDengine正式发布IoT场景下TDengine3.0性能对比分析报告,该报告在IoT场景下从数据写入、压缩和查询等维度,对比了TDengine与市场其他流行的时序数据库产品的性能差异,其中所有测试均在标准化条件下使用公开数据完成......
  • 关于 3.0 和 2.0 的数据文件差异以及性能优化思路
    如果需要对数据库性能优化,了解数据文件的存储方式和工作原理是必要的。对于时序数据库(TimeSeriesDatabase)TDengine来说,在2.x版本中时序数据的保留策略是由keep和days这两个参数把控的。(详情可见:https://mp.weixin.qq.com/s/uJEQwN0NnmSTBAMOecAtoA)我们通过keep和days来......
  • 关于 3.0 和 2.0 的数据文件差异以及性能优化思路
    如果需要对数据库性能优化,了解数据文件的存储方式和工作原理是必要的。对于时序数据库(TimeSeriesDatabase)TDengine来说,在2.x版本中时序数据的保留策略是由keep和days这两个参数把控的。(详情可见:https://mp.weixin.qq.com/s/uJEQwN0NnmSTBAMOecAtoA)我们通过keep和days来......