【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】5.0.0
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
请问tidb_gc_life_time设置多大比较合适,谢谢!
【资源配置】
【附件:截图/日志/监控】
看业务,根据实际情况设置,太长会占用过大的空间,太短很多历史变更数据可能就查不到了
根据业务调整试试,但是不要太长,会引起性能问题
你改这个参数的需求是什么?没有需求就别改
整体修改删除多的,以记录状态为主的,就要设置短一点。
整体插入多的,以记录操作日志为主的,就可以长一点。
和你的机器性能也有关系。
反正我的机器性能不行,就用10分钟了,而且就我管理这个库。有10-20m的flashback,基本足够覆盖我自己的操作失误。
如果是新库灌入数据的话,建议时间放长一些,20-30分钟,灌完数据后,再改回来!
业务频繁更改的话,5-10分钟吧
具体还要看模块节点配置等
防止右人误删了还可以把数据还原
tidb_gc_life_time
从 v5.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:Duration
- 默认值:
10m0s
- 范围:
[10m0s, 8760h0m0s]
- 这个变量用于指定每次进行垃圾回收 (GC) 时保留数据的时限。变量值为 Go 的 Duration 字符串格式。每次进行 GC 时,将以当前时间减去该变量的值作为 safe point。
注意
- 在数据频繁更新的场景下,将
tidb_gc_life_time
的值设置得过大(如数天甚至数月)可能会导致一些潜在的问题,如:- 占用更多的存储空间。
- 大量的历史数据可能会在一定程度上影响系统性能,尤其是范围的查询(如
select count(*) from t
)。
- 如果一个事务的运行时长超过了
tidb_gc_life_time
配置的值,在 GC 时,为了使这个事务可以继续正常运行,系统会保留从这个事务开始时间start_ts
以来的数据。例如,如果tidb_gc_life_time
的值配置为 10 分钟,且在一次 GC 时,集群正在运行的事务中最早开始的那个事务已经运行了 15 分钟,那么本次 GC 将保留最近 15 分钟的数据。
默认的就可以
那要看你们的响应速度,这个时间不能设置太长会影响数据库性能。
我看到大部分的社区用户一般设置 10分钟
比如:
维护人员,误操作删除了数据,2小时之后,业务侧才发现,那tidb_gc_life_time 要是 设置3小时,数据就闪回了,这样的话数据旧版本就比较多了,在查询使用当中,性能会损失些。
主要还是看业务,还有恢复时间等吧
我们是设置1小时,10分钟可能误删了数据不一定来得及操作或者发现不了。不过主要还是看数据更新的频率和磁盘,多少会影响点性能,我见过最大的是设置1天。
看需求,我计划设置24小时或者48小时,我们库insert为主,update不多 delete没有所以 mvcc副本多了没影响
24小时,挺大啊,你们,不 select 么,,,要是 经常范围查的话,就损耗性能了
影响select就看update和detele导致的 mvcc版本多少了,能保证update和detele少就能解决这个问题
恩呢,那阔以滴。还是要看业务了
看成tikv了
tikv_gc_life_time | 1h
我觉得24小时合适,但是默认是10分钟,10分钟很难发现问题
我们一直用的默认值,硬件跟不上的时候,设置的太长会影响性能。