老版本4.0.2版本delete之后的数据可以通过缩容清理空regin吗

现在有2套库 4.0.2 和4.0.9 ,大概从18年数据到现在。然后现在删除数据delete,删到了2022年6月。基本上删了一半的数据,8T估计也删了又4T数据量了。但是硬盘不会降低低。。我看了一下6.5版本以后得,delete会慢慢的合并降低磁盘。6.5以内的没有。这个现在想要节省 怎么弄呢?我在想。直接缩容 会不会处理掉空regin 节省空间呢?

DELETE,TRUNCATE 和 DROP 都不会立即释放空间。对于 TRUNCATE 和 DROP 操作,在达到 TiDB 的 GC (garbage collection) 时间后(默认 10 分钟),TiDB 的 GC 机制会删除数据并释放空间。对于 DELETE 操作 TiDB 的 GC 机制会删除数据,但不会释放空间,而是当后续数据写入 RocksDB 且进行 compact 时对空间重新利用。

1 个赞

没用过老版本的tidb,我看4.0文档也写了可以手工compact tikv。如果你硬盘gc后不释放,你可以考虑手工compact.
这个操作io负载很高,别在业务高峰用

2 个赞

清理空间主要靠compact的,可以手工compact试下

1 个赞

试一下老哥说的这个

我看文档说的是6.5版本之前compact是重新利用空间。不是节省空间。6.5及以后版本compact是节省空前降低磁盘使用量。

缩容不就相当于3个1T变成了2个1T?这种不能算释放空间吧

现在就是想要节省资源 减少机器呢。缩容3个1T的 缩到2台服务器,如果空的regon直接释放。那是不是剩下2台机器还是只有1T空间 还是3个副本。剩下2个机器磁盘不增加。不算是释放空间了吗

是不是删除后有很多空region?按理说空region合并后会缩空间的。
检查下gc。

还有一种情况就是空region和相邻的region不在一个机器上,无法合并,可以试试
scheduler add shuffle-region-scheduler
随机交换试试。这个也会导致性能抖动,慎用。

1 个赞

谢谢各位大哥大姐回复。之前删除了几天看存储并没有降低,然后看了官方文档6.5以内的没有说明delete会自动收缩,我以为磁盘不会降低呢。刚看了一下监控磁盘使用率好像降低了。
目前观察4.0.9版本的库 磁盘空间降低了一部分。并不是降低特别多。只能刚刚好缩容一两台机器把。
4.0.9这个我看了一下趋势,15天时间,降低了一部分。之前平均每个服务器1.3-1.4T现在是800-1T之间。
我是2月1号到2月13号 每天基本上都有删除将近2亿数据左右,然后停止删除。从22号又开始每天1亿左右删除数据。
后期我全部删除之后在观察观察情况把。
image

1 个赞

4也回缩的,尤其是你删除删出了空region,compact就会合并region节省空间了。

1 个赞

compact是rocksdb的功能,我在高版本测试delete也是会回收空间的,这个回收速度按天计算,远不如直接手工compact快

好的了解了。之前了解的是delete不会释放空间。谢谢

这个不着急。接手别人的库没多久。直接要清理是历史数据,缩减开支。能少人工干预的就少人工干预。之前做了很多都影响业务了

GC 负责管理这个,检查一下配置是否合适

1 个赞

手动compact应该可以实现

1 个赞