为啥TDengine比TimescaleDB消耗这么多存储空间?

Posted

技术标签:

【中文标题】为啥TDengine比TimescaleDB消耗这么多存储空间?【英文标题】:Why does TDengine consume so much less storage space compared with TimescaleDB?为什么TDengine比TimescaleDB消耗这么多存储空间? 【发布时间】:2021-10-05 06:21:46 【问题描述】:

这几天,我在 TDengine 中插入了大约 8000 万行数据,结果发现存储只消耗了大约 1GB。与 TimescaleDB 的存储使用量相比,TDengine 仅使用了 TimescaleDB 存储空间的 1/15 左右。对于 TimescaleDB,存储消耗通常在 15-18GB 左右,具体取决于架构。

taos客户端显示的TDengine的版本是2.0.20.8,TimescaleDB的版本是2.2.1

谁能解释为什么 TDengine 消耗的空间比 TimescaleDB 少得多?这种级别的压缩是否会导致数据失去其对 TDengine 的精度?

【问题讨论】:

您是否已打开压缩并在 Timescale 中工作? docs.timescale.com/timescaledb/latest/how-to-guides/compression wal_compression 已开启。其他参数未修改。 您必须按照那里的文档打开 TimescaleDB 的压缩机制,以减少 Timescale 使用的存储空间。 【参考方案1】:

几个原因,1:TDengine采用列式存储; 2:TDengine的数据模型是每个数据采集点一张表; 3:针对不同的数据类型,采用不同的压缩算法。

由于对于每个数据采集点(数据流),度量值是变化的,但有时变化很小或根本没有变化。基于列的存储很容易获得高压缩比

【讨论】:

以上是关于为啥TDengine比TimescaleDB消耗这么多存储空间?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 PostgreSQL(timescaledb) 在表中花费更多的存储空间?

为啥 TDengine 数据库在相同的过滤条件下不能返回相同数量的行?

为啥布尔值比字符消耗更多的内存?

为啥 python itertools “消耗”配方比调用下 n 次更快?

为啥 Numpy 和 Pandas 数组比源数据消耗更多内存? [关闭]

为啥TDengine由于Invalid table ID无法插入数据