【 TiDB 使用环境】生产环境
【 TiDB 版本】5.2.0
【遇到的问题:问题现象及影响】
tidb删除库后空间会腾出来吗?是通过gc来实现空间清理吗?
是的,需要等gc
这个gc是有默认的时间间隔,默认10分钟,也可以修改
可以的,等GC时间
慢慢等回收空间
等GC回收
可以,需要等待GC时间回收
首先,使用 DELETE
,TRUNCATE
和 DROP
语句删除数据,都不会立即释放空间。
何时释放呢,具体如下:
- 对于
TRUNCATE
和DROP
操作,在达到 GC时间后(默认 10 分钟),GC 机制会删除数据并释放空间。 - 对于 DELETE 操作, GC 机制会标记删除数据,要等到后续进行 compaction 时释放空间。
会的,当要等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时才会真正释放空间