一个月长时间没有开启gc,开启gc后,有方法看底层数据Compact的进度吗?

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
数据库没有开启gc,有些sql查询变慢。昨晚手动打开后,已运行12+小时,好像还有很大量的gc操作。有什么方法能看到总体的进度吗?

gc safe point就是进度呀

select * from mysql.tidb看tikv_gc_safe_poin时间

compact没有进度一说,gc后的数据可以在compact时清理,而compact的触发和gc无关主要看lsm tree每层是否到阈值。 因此很多情况下dml后空间几乎没什么释放。
对于truncat drop操作释放的空间是直接删sst文件,和compact无关,可以通过mysql.delete_range的两个表评估进度

3 个赞

那要是没有达到compact的阈值,数据的历史版本是不是就会一直存在,全表扫描的话就会有影响。

手动 compact 整个 TiKV 集群的数据

compact-cluster 命令可以对整个 TiKV 集群进行手动 compact。该命令参数的含义和使用与 compact 命令一样,唯一的区别如下:

  • 使用 compact-cluster 命令时,通过 --pd 指定 PD 所在的地址,以便 tikv-ctl 可以找到集群中的所有 TiKV 节点作为 compact 目标。
  • 使用 compact 命令时,通过 --data-dir 或者 --host 指定单个 TiKV 作为 compact 目标。

手动compcat会清理掉所有已经gc的数据吗

手动compact 可以参考这个按表操作的脚本,上面的是compact整个tikv,不过速度都会比较慢,并发高会影响性能

GC就是时间分片式的清理呀

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