在做数据清除后,如果加快空间释放

  • 【TiDB 版本】:3.0.1
  • 【问题描述】:在做数据delete之后,如何能够快速释放空间

4.3.5 TiDB 中删除数据后会立即释放空间吗?

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

4.3.11 对数据做删除操作之后,空间回收比较慢,如何处理?

可以设置并行 GC,加快对空间的回收速度。默认并发为 1,最大可调整为 tikv 实例数量的 50%。可使用 update mysql.tidb set VARIABLE_VALUE=“3” where VARIABLE_NAME=“tikv_gc_concurrency”; 命令来调整。

4.3.11所说的设置并行GC, 对于delete操作, 按4.3.5的说法是即使GC也不会释放空间的,那"加快对空间的回收速度"这句话怎么理解呢

对于空间释放这个问题,有没有其他好的实践呢,是不是更推荐drop, truncate操作

  1. tikv_gc_concurrency 的调整是如何影响 gc 的可以参考官方的文档:
    https://pingcap.com/docs-cn/stable/reference/garbage-collection/configuration/#tikv_gc_auto_concurrency
  2. gc 是有 3个 步骤: 1. Resolve Locks 2. Delete Ranges 3. Do GC 。truncate 和 drop 是会在 Delete Ranges 阶段回收 。直接进行物理删除。

truncate 和 drop 是会在 Delete Ranges 阶段回收,直接进行物理删除。 第3阶段 Do GC 是否释放delete数据后的物理空间

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。