tidb删除库后空间会腾出来吗

【 TiDB 使用环境】生产环境
【 TiDB 版本】5.2.0
【遇到的问题:问题现象及影响】
tidb删除库后空间会腾出来吗?是通过gc来实现空间清理吗?

是的,需要等gc

1 个赞

这个gc是有默认的时间间隔,默认10分钟,也可以修改

可以的,等GC时间

慢慢等回收空间

等GC回收

可以,需要等待GC时间回收

首先,使用 DELETETRUNCATEDROP 语句删除数据,都不会立即释放空间。

何时释放呢,具体如下:

  • 对于 TRUNCATEDROP 操作,在达到 GC时间后(默认 10 分钟),GC 机制会删除数据并释放空间。
  • 对于 DELETE 操作, GC 机制会标记删除数据,要等到后续进行 compaction 时释放空间。
1 个赞

会的,当要等GC回收

可以参考一下官方文档。 删除后不会立即腾出空间,是通过GC实现的
https://docs.pingcap.com/zh/tidb/v5.2/garbage-collection-overview#delete-ranges删除区间

gc会回收

GC默认10分钟回删除,要是没调过参数的话

TiDB 采用了多版本并发控制 (MVCC) 机制,当新写入的数据覆盖旧的数据时,旧的数据不会被替换掉,而是与新写入的数据同时保留,并以时间戳来区分版本。为了使并发事务能查看到早期版本的数据,删除数据时 TiDB 不会立即回收空间,而是等待一段时间后再进行垃圾回收 (GC)。要配置历史数据的保留时限,你可以修改系统变量 tidb_gc_life_time的值(默认值为 10m0s)。

truncate和drop 等过了gc时间就释放了,delete那就要等很久了,要compact释放

delete后tikv不会立即释放

删除只是打标记,会等gc进程 清理空间。

借楼主帖子请教一个问题,如果有一个事务跑的超过10min,在此期间另外一个事务已经把正在读的一条数据改了并且提交了,这时候gc会把旧的数据删除吗,还是等前一个事务提交了再删除

需要等GC或者手动执行空间整理
GC相关

谢谢大佬,这个解决了我的疑问

这三个命令都不会立即释放空间,不过不同于delete,其他两个命令会等到gc时间后释放空间,默认是十分钟。由于tidb的mvcc机智,delete命令反而会短期内增加磁盘空间。但是如果新增数据,可以使用delete删除后的空间。只有等到后续region时才会真正释放空间