Tidb按条件删除数据能释放磁盘空间吗,如DELETE FROM table_x WHERE id IN (xxxx,xx)

才看到4.09版本,这个版本太低,前面回复的不一定完全一样

是啊 当年对接的时候 这个是最新版本,两三年没升级版本了,,,这么看,我还是做两手准备吧,扩容+部分删除

不是立即释放,有gc时间,默认10分钟。后台会有gc任务整理

文档里面对于这种问题回答的很清楚了,可以多看看文档

在 TiDB 中使用 DELETETRUNCATEDROP 语句删除数据都不会立即释放空间。对于 TRUNCATEDROP 操作,在达到 TiDB 的 GC (garbage collection) 时间后(默认 10 分钟),TiDB 的 GC 机制会删除数据并释放空间。对于 DELETE 操作,TiDB 的 GC 机制会删除数据,但不会立即释放空间,而是等到后续进行 compaction 时释放空间。

我觉得像这种删除会很多的,可以在业务设计初期就做好,类似于冷热数据分离,物理分表,到时候直接 truncate表,不然到时候磁盘涨的太快,删除又不释放很容易出问题

是的,这个确实很有必要 :+1:

嗯,申请资源做扩容的准备吧… 两手准备不吃亏

执行完 delete 不会立即释放,会定期发起 Garbage Collection(GC) 清理不再需要的旧数据。

急可以compact

我们是等自己删除,稳

可以的

非必要不要用DML删除数据吧?

这样肯定有碎片呀。 释放空间还得是move或者truncate一下。

虽然不会立即释放,但是有GC机制,会定时清理释放的。

1 个赞

delete操作不会立刻释放,需要等 compaction 后才会释放空间

delete完了还是等等好一点

不会,GC后也不会, 而是要等compaction好点。 只有truncate\drop会等到GC释放

https://docs.pingcap.com/zh/tidb/stable/dev-guide-delete-data#tidb-gc-机制

不会立刻释放空间的,下面这篇文档说明了
SQL 操作常见问题 | PingCAP 文档中心