分区全局索引、TiDB 工具链、资源管控若干底层机制疑问

【TiDB 使用环境】测试环境(原理学习验证场景)
【部署方式】机器部署
【操作系统/CPU 架构/芯片详情】x86_64 Linux
【机器部署详情】标准测试集群规格
【集群数据量】测试数据
【集群节点数】PD×3、TiKV×3、TiDB×2、TiFlash×2

【问题复现路径】学习TiDB PCTA认证相关课程与官方文档,梳理知识点时,多个模块存在选项辨析疑问,文档描述缺少直接对比结论。

【遇到的问题:问题现象及影响】
针对以下模块底层机制存在理解模糊点,希望社区大佬帮忙梳理原理边界:

  1. 分区表 Local Index / Global Index
    全局索引底层Key编码差异;表达式前缀全局索引统计信息自动收集限制;TRUNCATE PARTITION操作对全局索引的影响;分区表不声明GLOBAL关键字时索引默认类型。
  2. 资源管控参数协同
    resource-control.enabled 与 tidb_enable_resource_control 同时配置不同值时集群行为差异。
  3. TiFlash内存落盘机制
    查询级、算子级两层落盘阈值优先级;存在支持落盘算子场景下依然出现内存超限的诱因。
  4. TiUP运维规范
    集群不停机滚动升级执行边界;集群标准启动顺序;TiFlash在线缩容前置条件。
  5. 迁移与备份工具场景区分
    TiDB Lightning Logical/Physical导入模式适用限制;BR备份恢复特性;Dumpling导出约束;sync-diff-inspector数据校验限制;DM适配场景边界。
  6. TiCDC、Raft高可用架构
    TiCDC同步任务约束、表索引要求;Raft副本模式下机柜、多数据中心故障容忍逻辑;两地三中心架构优势。

【资源配置】测试学习集群,无生产Dashboard截图
【复制黏贴 ERROR 报错的日志】无报错,属于原理知识探讨
【其他附件:截图/日志/监控】无

加油加油

一起学习吧,坐等大神解答

缩容 TiFlash 前,必须确保没有正在运行的 TiFlash 副本 ,或者系统能够自动将 TiFlash 副本迁移/删除。如果强行缩容带有活跃副本的 TiFlash 节点,可能会导致 Raft 组异常或查询报错

1、索引默认规则

分区表不写 GLOBAL,所有索引默认是 Local Index(分区本地索引)

  • Local Index:索引和数据分区一一绑定,每个分区独立维护一份索引,索引键自带分区 key 前缀;
  • Global Index:必须显式声明 CREATE INDEX idx_name ON t(col) GLOBAL,全局一份索引,横跨全部分区。

2、Local Index & Global Index Key 编码结构差异

Local Index 编码

plaintext

IndexKey = [分区Range前缀] + 索引列值 + 主键(rowid)
  • 数据、索引 Region 完全同分区绑定;分区裁剪时索引自动跟随分区裁剪,性能最优;
  • TRUNCATE / DROP PARTITION:直接删除该分区所有索引数据,元数据同步清理,无残留、无后台 GC 压力。

关于分区全局索引的Key编码差异,全局索引默认使用分区键+主键构造独立Key,而Local索引则包含分区ID。建议通过SHOW INDEXES查看具体编码结构。TRUNCATE PARTITION会直接删除对应索引段,全局索引需重建。不声明GLOBAL默认是Local索引。

一起学习吧,坐等大神解答

自己查资料吧 :grimacing:

缩容 TiFlash 前,必须确保没有正在运行的 TiFlash 副本 ,或者系统能够自动将 TiFlash 副本迁移/删除。如果强行缩容带有活跃副本的 TiFlash 节点,可能会导致 Raft 组异常或查询报错