【磁盘】磁盘空间未释放

【详述】为了优化大表join查询,对几个表做了colocate_group配置,目前group状态已经为true了,但磁盘空间还未释放
【背景】做过哪些操作?
【业务影响】
【StarRocks版本】例如:2.4.0
【集群规模】例如:3fe(1 follower+2observer)+9be(fe与be分离)
【机器信息】CPU虚拟核/内存/网卡,例如:32C/128G/万兆
【联系方式】为了在解决问题过程中能及时联系到您获取一些日志信息,请补充下您的联系方式,例如:社区群12-金谡-jinsu@moojing.com或者邮箱,谢谢
【附件】

  • fe.log/beINFO/相应截图
  • 慢查询:
    • Profile信息
    • 并行度:show variables like ‘%parallel_fragment_exec_instance_num%’;
    • pipeline是否开启:show variables like ‘%pipeline%’;
    • be节点cpu和内存使用率截图
  • 查询报错:
  • be crash
    • be.out
      group状态
      mysql> SHOW PROC ‘/colocation_group’;
      ±---------------±------------------±---------------------------±-----------±---------------±------------±---------+
      | GroupId | GroupName | TableIds | BucketsNum | ReplicationNum | DistCols | IsStable |
      ±---------------±------------------±---------------------------±-----------±---------------±------------±---------+
      | 10153.42675395 | 10153_taobao_item | 10154, 10158, 10156, 10160 | 32 | 3 | varchar(32) | true |
      ±---------------±------------------±---------------------------±-----------±---------------±------------±---------+
      1 row in set (0.00 sec)
      磁盘利用情况,在设置group之前约75%左右,现在90%了
      image

删除 Colocation Groupdrop时是用 drop force 强制删除的吗? 不然他会在元数据中保留一天 在进入trash目录的,trash会保留三天 这样他四天都不会释放 trash目录可以手动清理

数据分布情况:
mysql> SHOW PROC ‘/colocation_group/10153.42675395’;
±------------±--------------------------+
| BucketIndex | BackendIds |
±------------±--------------------------+
| 0 | 10007, 29626372, 3138258 |
| 1 | 3138299, 3138258, 4215029 |
| 2 | 3138299, 3138258, 10007 |
| 3 | 10108, 10119, 4215029 |
| 4 | 29626372, 4215029, 10007 |
| 5 | 10108, 10119, 29626372 |
| 6 | 10108, 4215029, 10003 |
| 7 | 10119, 10107, 4215029 |
| 8 | 3138299, 10003, 29626372 |
| 9 | 3138258, 3138299, 4215029 |
| 10 | 10107, 3138299, 3138258 |
| 11 | 10003, 10007, 10108 |
| 12 | 10119, 10107, 29626372 |
| 13 | 10108, 3138299, 29626372 |
| 14 | 10107, 10003, 29626372 |
| 15 | 10108, 10119, 10107 |
| 16 | 3138299, 10003, 29626372 |
| 17 | 3138299, 3138258, 4215029 |
| 18 | 10119, 3138299, 3138258 |
| 19 | 10107, 10007, 4215029 |
| 20 | 10119, 10107, 29626372 |
| 21 | 10003, 10007, 10108 |
| 22 | 10119, 10107, 4215029 |
| 23 | 10108, 10119, 10003 |
| 24 | 3138258, 3138299, 10003 |
| 25 | 3138258, 3138299, 10007 |
| 26 | 4215029, 10003, 10007 |
| 27 | 10119, 10003, 3138258 |
| 28 | 10007, 10119, 29626372 |
| 29 | 10107, 10007, 29626372 |
| 30 | 10108, 10107, 3138258 |
| 31 | 10003, 10007, 10108 |
±------------±--------------------------+
32 rows in set (0.00 sec)

colocate group中的这四张表的建表语句:

见文件, 已做脱敏处理. 四张表都是PARTITION BY RANGE(time, cat1), time是date类型, cat1是bigint(20)类型
item2 (754.5 KB) item2_cp (378.5 KB) itemattr2 (472.1 KB) itemattr2_pic (472.4 KB)

这个Group 里面的表您是采用什么命令删除的 ?

没有删除过group;

问题是 group 的 IsStable 变为true,是不是就说明数据迁移完成了? 如果完成了,那么多余的数据空间应该会被释放吧? 我理解它会自动把相同分区的数据迁移到同一个be下,迁移完成后才会释放那些不在同一个be下的数据?

今天看,磁盘使用情况还维持在高位,我们设置的trash和drop都是24h过期呢

重新捋一下 我理解您是创建了一个colocate_group,然后alter了几个表的属性加入到了group里面(还是新建的表?),当前SHOW PROC ‘/colocation_group’; IsStable是true, 疑问是修改了属性的几个表/或者新建, 按道理所有表的数据会分布在相同一组 BE 节点上,当前看磁盘空间还是大概相同? 没有变动?

5-30 创建的colocate_group, alter了4张表,加入到group中
当时SHOW PROC ‘/colocation_group’; IsStable是false
6-1 再次查看SHOW PROC ‘/colocation_group’; IsStable是true
磁盘占用也从75% 上升到了90%, 而且不均匀
我的问题是,colocate_group会增加磁盘占用吗? 我看文档上写的是会均匀分布一下现有的数据;但实际情况是增加了磁盘占用空间? 如果不会增加,那大概什么时间这些额外的空间能被释放出来

我们重新排查了一下,be重启后trash的配置被还原了,是3天;晚上改下配置再看看,谢谢!

不会占用的 ,您磁盘占用大概率是trash目录没有清理导致的 ,晚上改完配置您在观察下

问题已解决,trash已清理