delete数据后,如何快速释放存储空间

【 TiDB 使用环境】生产环境
【 TiDB 版本】V5.4.0
【复现路径】delete from table_name a where a.time < ‘2025-05-01’ limit 10000;
【遇到的问题:问题现象及影响】在delete表后,如何快速腾出存储空间,gc设置的默认10分钟。
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

1 个赞

看下mvcc有没有参数可以调整一下?

或者直接drop partition ?

参考官方文档说明,不会立即释放,gc后也不会立即释放。

关于compaction可以参考大佬的文章

1 个赞

TiKV Control 使用说明 | TiDB 文档中心

需要compact才能真正释放空间,就算gc了,空间也没释放

手动触发region的compaction操作,或者对于一些清空整个表的操作,使用truncate命令代替delete命令,这样10分钟后就能释放空间

truncate不就完了

需要把水位降下来,可以尝试重建一下表

是不是要管理员权限才能触发?

1 把 tikv_gc_life_time 缩到 10 min
2 手动触发全局 compaction

如果是生产库的话最好不要动这个GC类的参数,或者根据业务来设置GC的间隔参数

手动命令是什么

cd /root/.tiup/components/ctl/v6.5.12
./tikv-ctl --host=10.0.0.15:20160 compact --from=‘z’ --to=‘z’ --threads=16 --bottommost force

1 个赞

手动触发全局 compaction能把服务器io跑满,而且占用巨多磁盘空间

1 个赞

不需要吧,只要有对应权限就行

1 个赞

谢谢,我问下dba有没有权限.

哦,那看来不能手动,很可能会影响业务

手动触发region的compaction操作,或者对于一些清空整个表的操作,使用truncate命令代替delete命令,这样10分钟后就能释放空间

1 个赞