TiDB 组件 GC 原理及常见问题

💡 原文中文,约13200字,阅读约需32分钟。
📝

内容提要

本文介绍了TiDB的垃圾回收(GC)机制及其实现原理和常见问题排查方法,包括计算GC safepoint、解析锁、连续范围数据删除和同步GC safepoint至集群其他组件。文章还讲述了定位GC leader、监控GC状态以及处理GC过程中的常见问题。

🎯

关键要点

  • TiDB 的垃圾回收(GC)机制旨在清理旧数据,减少对性能的影响,主要包括计算 GC safepoint、解析锁、连续范围数据删除和同步 GC safepoint。

  • TiDB 使用 RocksDB 存储引擎,通过 MVCC 机制实现分布式存储引擎 TiKV,以支持高可用分布式事务。

  • GC leader 是负责推动集群 GC 工作的角色,TiDB 中同一时刻只有一个 GC leader。

  • GC 流程主要分为四个步骤:计算 GC safepoint、清理锁、删除连续范围数据和同步 GC safepoint。

  • 计算 GC safepoint 时需要考虑 GC lifetime 和未提交事务的状态,以确保数据安全性。

  • Resolve locks 步骤用于清理 GC safepoint 之前的锁,以避免数据一致性问题。

  • Delete Ranges 步骤针对连续范围的数据进行物理删除,以优化性能。

  • 最后一步是将 GC safepoint 同步到 PD,以通知 TiKV 开始 GC 工作。

  • 监控 GC 状态可以通过 Grafana 观察 GC worker actions 和 GC safepoint 的推进情况。

  • 常见问题包括 GC 卡住、未提交事务影响 GC 进程等,需要通过日志进行排查。

延伸问答

TiDB 的垃圾回收(GC)机制是如何工作的?

TiDB 的 GC 机制通过计算 GC safepoint、解析锁、删除连续范围数据和同步 GC safepoint 至集群其他组件来清理旧数据,减少性能影响。

什么是 GC safepoint,它的作用是什么?

GC safepoint 是一个时间戳,表示在此时间点之前的数据快照是安全的,GC 过程会根据这个时间戳来决定哪些旧版本数据可以被清理。

如何监控 TiDB 的 GC 状态?

可以通过 Grafana 监控 GC worker actions 和 GC safepoint 的推进情况来观察 TiDB 的 GC 状态。

GC leader 在 TiDB 中的角色是什么?

GC leader 是负责推动集群 GC 工作的角色,确保同一时刻只有一个 GC leader 来协调 GC 过程。

TiDB GC 过程中常见的问题有哪些?

常见问题包括 GC 卡住、未提交事务影响 GC 进程等,这些问题通常需要通过日志进行排查。

如何处理 GC safepoint 被卡住的情况?

可以检查当前集群中是否存在长时间运行且未提交的事务,或使用 PD 查看需要的最旧快照对应的 safepoint,以定位问题。

🏷️

标签

➡️

继续阅读