3.2.1版本的tdengine的占用磁盘大,3.3.6.13占用磁盘小,具体原因是什么?

【TDengine 版本】

旧版本3.2.1版本的tdengine

新版本3.3.6.13版本的tdengine

【遇到的问题:问题现象及影响】

旧版本的tdengine数据大概也是百亿级别,旧版本的数据占用磁盘如下

表结构如下:

存储的数据样例如下:

也不是很大的数据,但是超级表中有几个字符串字段是分配空间比较大

image

新版本tdengine是3.3.6.13的,并且使用taosBenchmark插入数据,执行了这个脚本:taosBenchmark -d db_test -t 30000 -n 1000000 -T 4 -I stmt -y 生成两百多亿数据,字段表如下

但是虽然字段有所差别,但是旧版本的占用2.4T左右的磁盘,新版本只占用94M,差别如此之大,是什么原因导致的?
image

假如建表时候这个几个字段的大小分配,是预分配的吗?还是说字段实际占用多大就分配多大?和这几个大字段有关系吗,但是我们实际存储的这几个字段字符很小,就10-20个字符左右。

  1. 您应该是看错数据目录了,300亿数据不可能只占这么小的空间,可以show dnode 1 variables like ‘dataDir‘看下实际数据目录位置
  2. varchar是实际占用多大就分配多大的

按照你的执行后,验证数据目录没有错,重新验证了一下,还是一样,然后通过超级表查询新版本前10条的数据,也是有的,数据样例如下:

而且查看总磁盘的占用确实也不高,基本没有数据占用

请问是什么原因导致的呢?

可以加我微信,给你看一下15231769300