首页 > 其他分享 >TiDB 的 Garbage Collection 机制

TiDB 的 Garbage Collection 机制

时间:2023-08-13 18:32:41浏览次数:39  
标签:触发 手动 HTTP Garbage SQL Collection GC TiDB

TiDB 的事务的实现采用了 MVCC(多版本并发控制)机制,当新写入的数据覆盖旧的数据时,旧的数据不会被替换掉,而是与新写入的数据同时保留,并以时间戳来区分版本。Garbage Collection (GC) 的任务便是清理不再需要的旧数据。

TiDB 中的垃圾回收(Garbage Collection,GC)是自动触发的,不需要手动触发。当 TiDB 中的数据发生变化时,TiDB 会自动将不再需要的数据标记为“垃圾”,并在后台异步地进行回收。这个过程是由 TiDB 的后台 GC 协程完成的。

如果您需要手动触发 TiDB 的 GC,可以通过以下两种方式之一来实现:

  • 手动执行 GC SQL 语句

  • 在 TiDB 中,可以手动执行 GC SQL 语句来触发 GC。执行 GC SQL 语句的方式如下:

这个 SQL 语句会将 TiDB 的 GC 配置参数设置为:

tidb_gc_run_interval:GC 执行的时间间隔,单位为秒。将其设置为 0 表示立即执行 GC。
tidb_gc_life_time:数据的 GC 保留时间,单位为秒。将其设置为 1 表示只保留 1 秒内的数据。
tidb_gc_safe_point:GC 的安全点,表示在这个时间点之前的数据都是安全的,不需要进行 GC。将其设置为当前时间即可。

执行完这个 SQL 语句后,TiDB 会立即执行 GC。

使用 TiDB 的 HTTP API

TiDB 还提供了 HTTP API,可以通过发送 HTTP 请求来触发 GC。具体操作步骤如下:

  • 启动 TiDB 的 HTTP 服务。在 TiDB 的配置文件中,将 status.status-port 参数设置为一个非 0 的端口号,表示启用 HTTP 服务。

  • 发送 HTTP 请求。可以使用 curl 命令或其他 HTTP 客户端工具来发送 HTTP 请求。请求的 URL 为 http://<tidb-server>:<status-port>/gc,其中 <tidb-server> 表示 TiDB 的 IP 地址或主机名,<status-port> 表示 HTTP 服务的端口号。

  • 例如,要触发 IP 地址为 192.168.0.100 的 TiDB 实例的 GC,可以执行以下命令:

  • 发送完请求后,TiDB 会立即执行 GC。

需要注意的是,手动触发 GC 可能会对 TiDB 的性能产生一定的影响,因此建议仅在必要时才手动触发 GC。如果您需要了解更多关于 TiDB 的 GC 的信息,可以参考 TiDB 官方文档中的 [1]。

参考文献: https://docs.pingcap.com/zh/tidb/stable/garbage-collection-overview

标签:触发,手动,HTTP,Garbage,SQL,Collection,GC,TiDB
From: https://blog.51cto.com/shawnyan/7068700

相关文章

  • Tidb异名恢复Mysql数据库的过程
    Tidb异名恢复Mysql数据库的过程背景先说坑:TiDB备份恢复的方式1.mysqldump+mysqlsource的方式.2.mydumper+loadertidb的一个工具组件3.lightningdumpling的备份恢复方式是4.brbackuprestore备份恢复的方式.好像除了方式1都没提供明确的更换数据库的......
  • Collections.unmodifiableList方法
    在阅读mybatis拦截器链源代码时,发现其是这么写的:////Sourcecoderecreatedfroma.classfilebyIntelliJIDEA//(poweredbyFernFlowerdecompiler)//packageorg.apache.ibatis.plugin;importjava.util.ArrayList;importjava.util.Collections;importjava.util......
  • P3520 [POI2011] SMI-Garbage
    \(P3520\)\([POI2011]\)\(SMI-Garbage\)题目描述有一个可以看成无向图的城市,上面有\(n\)个点和\(m\)条边。每一天,有若干辆垃圾车按照环形来跑一圈。并且,对于一辆垃圾车,除了起点以外不能跑两次。一条路有\(2\)种状态:清洁的(用0表示)或不清洁的(用1表示)。每次垃圾车经......
  • tidb备份恢复的方式方法
    tidb备份恢复的方式方法摘要可以单独每个数据库实例进行备份,但是这种机制实在是太慢了.网上查资料发现可以使用tiupbr的方式进行备份.但是大部分文档都比较陈旧,官网上面又比较贴心的只有s3的.找了一大堆找到一个文档可以使用nfs,所以这里记录一下.备查br其实......
  • 20 re/collection/time/random模块
    re模块补充说明importreret=re.findall('a(b)c','abcabcabcabc')#优先显示括号内东西print(ret)#['b','b','b','b']ret=re.findall('a(?:b)c','abcabcabcabc')#?:表示忽视括号print(r......
  • MyBatis中的association与collection应用
    MyBatis中的association与collection应用在使用MyBatis进行数据库操作时,经常会遇到需要处理对象之间的关联关系和集合映射的情况。为了更好地实现对象关系映射,MyBatis提供了association和collection两个核心功能,让我们可以更便捷地处理复杂的数据结构。本文将详......
  • 从 MySQL 到 Oracle 再到全面 TiDB ,云盛海宏的数据库架构实践
    作者:TiDB社区小助手导读云盛海宏的零售系统是支持全渠道、全品类运动鞋服的零售服务平台,为全球8000+多家线下门店提供零售服务支持。发展至今,云海零售系统的数据库经历了从MySQL到Oracle再到全面TiDB的架构演进。本文由InfoQ主编赵钰莹撰写,与云盛海宏首席架构师洪亮共同......
  • 【TiDB v7.1.0 荣誉体验官招募】索尼 PS5 、索尼无线降噪耳机、倍轻松颈部按摩器等你
    TiDBv7.1是2023年度发布的首个LTS(LongTermSupport)版本,汇集了来自20+个真实场景带来的功能增强,累计优化和修复140+功能,旨在提升关键业务的稳定性和性能,帮助开发人员和数据库管理员提高生产力并进一步降低总体拥有成本(TCO)。大家可在生产环境中放心地使用TiDBv7.1.0。......
  • TiDB v7.1.0版本 相关(部署、在线扩容、数据迁移)测试
    作者:tomxuTiDBv7.1.0版本相关(部署、在线扩容、数据迁移)测试一、服务器信息参数|序号|服务器型号|主机名|配置||IP地址|用户名|密码||--|---------|---------------------------|--------------------------------------------------------------|-|......
  • Collection 和 Collections 有什么区别?list set map区别
    Collection和Collections有什么区别?java.util.Collection是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直......