tikv_gc_safe_point的时间可以指定吗?

TiDB 使用环境:生产环境
TiDB 版本:V7.5
遇到的问题:请问tikv_gc_safe_point的时间可以指定吗?当前tidb_gc_life_time设置的是48小时,导致tikv_gc_safe_point的时间正好是业务高峰。

更新下:safe point的计算方式为当前时间减去 GC life time。通过设置tidb_gc_life_time为24小时的整数倍,就可以规避夜间大量删数对生产时段gc的影响。

目测是不能修改的。

以下来自 TiDB AI 小助手

tikv_gc_safe_point 是 TiDB 中一个重要的系统变量,它代表了垃圾回收 (GC) 的安全点。安全点是一个时间戳,表示 TiDB 已经完成了对该时间戳之前所有数据的垃圾回收。

tikv_gc_safe_point 与垃圾回收机制的关系:

  • 安全点计算: TiDB 的垃圾回收机制会定期运行,每次运行时都会计算一个安全点。安全点通常由当前时间减去 GC 生命周期 (默认 10 分钟) 来确定。
  • 数据清理: 安全点确定后,TiDB 会清理掉所有在安全点之前提交的数据版本。这意味着,安全点之前的旧数据版本将被删除,而安全点之后的数据版本将被保留。
  • 数据一致性: 安全点确保了在安全点之后的所有快照都具有数据一致性。也就是说,在安全点之后,即使进行垃圾回收,也不会影响到对数据的读取操作。

tikv_gc_safe_point 的作用:

  • 防止数据丢失: 安全点确保了在安全点之后的所有快照都具有数据一致性,防止了由于垃圾回收导致的数据丢失。
  • 释放存储空间: 通过清理旧数据版本,安全点可以释放存储空间,提高 TiDB 的性能。
  • 提高数据读取效率: 通过清理旧数据版本,安全点可以减少 TiKV 节点上的数据量,提高数据读取效率。

总结:

tikv_gc_safe_point 是 TiDB 垃圾回收机制中的一个重要概念,它确保了数据一致性,释放了存储空间,并提高了数据读取效率。

这个并不影响啥,只能代表这个点之前的 mvcc 旧版本数据可以被安全的删除了
gc 运行间隔为 run_interval 参数控制
高版本有 GC in Compaction Filter 机制,避免了 gc 消耗大量资源,参考:https://docs.pingcap.com/zh/tidb/stable/garbage-collection-configuration#gc-in-compaction-filter-机制

:yum:如图时,是否可以先设置一个8h的间隔,等23点执行完成后再设置24h,这样就能避开业务高峰了吧。

tikv_gc_safe_point 这个时间是默认10分钟更换一次,根据你设置的tidb_gc_life_time时间间隔。tikv_gc_safe_point 10分钟变动一次,可以修改 tidb_gc_run_interval 间隔时间。

改interval时间,错过你的业务高峰后,再改回来,但是这个应该没啥影像吧

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