TiKV Region Split 全流程分析

TiKV Region Split 全流程分析

💡 原文中文,约16300字,阅读约需39分钟。
📝

内容提要

Region Split 是 TiKV 中的重要过程,涉及 Region 的创建和扩展。分裂可以由内部机制或人工触发,主要通过 TiKV、PD 和 TiDB 进行。分裂过程包括计算 Split Key 和执行分裂,TiKV 定期检查 Region 大小以决定是否分裂,PD 和 TiDB 也可通过 API 触发分裂。分裂的执行依赖于 Raftstore,以确保数据一致性。

🎯

关键要点

  • Region Split 是 TiKV 中 Region 生命周期中最重要的步骤,分裂是 Region 增加的唯一方式。

  • Region Split 可以由内部机制(如 Region 大小超过阈值)或人工手段(如建表或手动分裂)触发。

  • TiKV 定期检查 Region 大小以决定是否分裂,默认每 10 秒检查一次。

  • PD 也可以通过 HTTP API 或 gRPC 接口触发 Region Split。

  • TiDB 在建表或添加分区时会自动进行 Region 的预切分,以避免热点问题。

  • Region Split 的执行依赖于 Raftstore,以确保数据一致性。

  • Split Key 的计算可以通过精确扫描或指定 Key 进行,不同方式适用于不同场景。

  • TiKV 支持多种 Split 方式,包括根据 Size、Key 数量和 Table 切分等。

  • 分裂过程包括确认 Region 为 leader、获取新 Region ID、发送 Split log 提案等步骤。

  • 分裂后的 Region 会更新其状态并向 PD 上报心跳,确保数据一致性和可用性。

延伸问答

什么是 TiKV 中的 Region Split?

Region Split 是 TiKV 中 Region 生命周期中最重要的步骤,是 Region 增加的唯一方式。

Region Split 是如何触发的?

Region Split 可以由内部机制(如 Region 大小超过阈值)或人工手段(如建表或手动分裂)触发。

TiKV 是如何计算 Split Key 的?

Split Key 的计算可以通过精确扫描或指定 Key 进行,不同方式适用于不同场景。

PD 如何触发 Region Split?

PD 可以通过 HTTP API 或 gRPC 接口触发 Region Split,例如调用 /regions/split 的 API。

Region Split 的执行过程是什么样的?

执行过程包括确认 Region 为 leader、获取新 Region ID、发送 Split log 提案等步骤。

TiDB 在何时会进行 Region 的预切分?

TiDB 在建表或添加分区时会自动进行 Region 的预切分,以避免热点问题。

🏷️

标签

➡️

继续阅读