storage wal占用空间远高于真实数据量

  • nebula 版本:2.0.1版本
  • 部署方式:分布式
  • 安装方式: RPM
  • 是否为线上版本:Y / N
  • 硬件信息
    • 磁盘( 推荐使用 SSD)
    • CPU、内存信息
  • 问题的具体描述:批量数据导入成功后,wal_ttl触发前,storage 下的wal占用空间远远高于真实数据占用空间
9.1G    ./data
11G     ./wal/18
11G     ./wal/53
11G     ./wal/68
11G     ./wal/32
11G     ./wal/39
51G     ./wal
60G     .
  • 问题1.wal占用空间远远大于 真实数据是什么原因呢?wal中存储的存储什么呢?
  • 问题2.由于wal占用空间比较多,大批量导入数据的时候容易导致磁盘空间不足,storage服务挂掉,有什么优化参数配置吗?

有个wal_ttl 参数。来设置wal的生命周期

1 个赞

wal_ttl = 14400,clean_wal_interval_secs=600 都是用的默认参数配置,按照这个配置应该是每10分钟触发一次清除4个小时之前的wal文件,这个是没问题的。现在的情况是:在批量数据导入成功后,wal_ttl触发前,wal 的占用空间很大,9G的数据,wal有51G。这个wal里面存储的内容是什么?为什么这么大?有没有参数可以优化?因为当导入大批量数据时,由于wal很大,导致磁盘空间被占满,storage服务挂掉。谢谢

1 个赞

wal里面存储的主要存储的是commit rocksdb进行持久化之前的数据信息,当然也有很小的一部分心跳。
你把wal_ttl 改成1个小时试试。

1 个赞

好的,谢谢,我试试

1 个赞

如果你尝试完了觉得 pandasheeps 的回复解决了你的问题,记得勾选为【解决方案】哈

我把wal_ttl和clean_wal_interval_secs调小了, wal_ttl = 1800,clean_wal_interval_secs=60 ,这样会调整wal清除频率,每分钟触发一次清除30分钟之前的wal数据.,再一定程度上可以减少磁盘占用,但是不能从根本上较少wal数据大小。
wal路径下有不同的数字目录,应该是分区,这个分区的个数是由什么决定的?可以调整吗?谢谢
walsize
wal下的每一个路径的数据大小都相同,wal 的分区越多,wal也就越大。

wal_ttl和clean_wal_interval_secs 都小了,那整个wal文件不就变小了吗?

分区是是create space的时候指定的part的个数的每个part的Id。

1 个赞

1.wal_ttl和clean_wal_interval_secs 都小了,只是触发清除wal数据的频次快了,一定程度上可以减少wal文件。但是30分钟内的wal日志的大小是不变的,还是data数据的多倍。
2.create space的partition_num文档中建议是磁盘数量的5倍。如果数据量比较大,100亿点,200亿边也是partition_num按照这个配置吗?

1 个赞
  1. wal 文件有自己的格式,包含了数据和心跳信息。这个没法改动,只能通过wal_ttl 来讲过期的快速删除。
    2.part的个数,跟你配置的机器有关,机器多个了,可以多配点。

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。

浙ICP备20010487号