TiDBer0246
(Ti D Ber 4kqcv Kmf)
1
【TiDB 使用环境】测试环境
【TiDB 版本】v7.5 Community
【部署方式】机器部署(本地虚拟机)
【操作系统/CPU 架构/芯片详情】x86_64 CentOS7
【机器部署详情】2C 4G内存,普通SSD磁盘
【集群数据量】测试数据,十万行以内
【集群节点数】TiUP单机最小集群(1PD+1TiDB+1TiKV)
【问题复现路径】
- 使用TiUP搭建单机测试集群
- 直接执行CREATE TABLE创建普通业务表,不添加任何PARTITION分区定义
- 持续写入测试数据,观察Region自动分裂行为
【遇到的问题:问题现象及影响】
学习TiDB分布式存储原理,不清楚无分区普通表Region管理规则。疑问:
- 新建空白普通表,初始默认生成几个Region?
- TiKV触发Region自动分裂的默认大小阈值是多少?
- 十万行规模以内的小业务表,是否建议手动分区优化?
【资源配置】暂无Dashboard截图
【复制黏贴 ERROR 报错的日志】无报错
【其他附件:截图/日志/监控】暂无
【已查阅操作】翻阅官方架构文档,了解Region是TiKV最小存储单元,但没有找到小表场景最佳实践说明。
独善其身
(Ti D Ber Bi Rqfz5 K)
2
一张全新空普通业务表(无预分裂、无分区、无二级索引):只会初始化生成【1 条 Data Region】。
- 只要表建立了二级索引,每多 1 个索引,会额外再多生成1 个独立 Index Region。 例:表带 1 个普通二级索引 → 建表一共:1 个数据 Region + 1 个索引 Region = 2 个 Region。
- 这个初始唯一 Region 会被 PD 随机分配到某一台 TiKV 作为 Leader,副本依照集群副本配置分散存放。
- 验证命令(单机测试集群直接执行查看)
sql
SHOW TABLE REGIONS 你的表名;
- 关键痛点:自增主键连续写入时,全部写入这个初始 Region,新建表前期必然单 Region 写入热点,数据涨起来自动分裂后热点才会打散。
普罗米修斯
3
1、新建空白表,默认为1个region;
2、TiKV 希望每个 Region 保持的大小,默认为96MIB,触发分裂的实际大小上限,默认为144MIB;
3、十万行规模的数据量对于 TiDB 来说非常小,没有必要分区。
空表通常从少量 Region 起步,随数据增长按约 96MB(可配)自动分裂,具体以集群 region-split-size 为准。十万行小表一般不必手动分区,热点或超大表再考虑分区/打散。
lllzd
(时光旅行者)
6
新建表默认只有1个region,自动分裂阈值约96mb,十万行小表无需分区,自动管理即可。
mike117
(Ti D Ber Uvu Vx Fwd)
7
1)普通表新建后通常对应少量 Region(空表常见从 1 个 Region 起步,具体以 PD 调度结果为准,可用 INFORMATION_SCHEMA.TIKV_REGION_STATUS / pd-ctl region 查看)。
2)默认 Region 分裂大小约 96MB(region-split-size,版本/配置可调);还有按 key 数量等策略,小表数据远未到阈值前一般不会频繁分裂。
3)十万行以内小表通常不建议为了“优化”去手动 PARTITION;优先保证主键/索引合理。分区更多用于生命周期管理、历史归档、热点打散等明确场景。