一个好的问题描述有利于社区小伙伴更快帮你定位到问题,高效解决你的问题
【TiDB 使用环境】生产环境 /测试环境
【TiDB 版本】
【部署方式】云上部署(什么云)/机器部署
【操作系统/CPU 架构/芯片详情】
【机器部署详情】CPU大小/内存大小/磁盘大小
【集群数据量】
【集群节点数】
【问题复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
Tidb数据库建表的时候,要强制指定分区吗
一个好的问题描述有利于社区小伙伴更快帮你定位到问题,高效解决你的问题
【TiDB 使用环境】生产环境 /测试环境
【TiDB 版本】
【部署方式】云上部署(什么云)/机器部署
【操作系统/CPU 架构/芯片详情】
【机器部署详情】CPU大小/内存大小/磁盘大小
【集群数据量】
【集群节点数】
【问题复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
Tidb数据库建表的时候,要强制指定分区吗
不需要。
在 TiDB 里:
建表时不是必须指定分区,默认就是非分区表。
如果你的表:
直接建普通表即可
CREATE TABLE t (
id BIGINT PRIMARY KEY,
name VARCHAR(100)
);
TiDB 会自动做:
TiDB 本身已经是分布式的 ≠ 必须手动分区
两者不是一回事
以下场景才建议你显式分区:
PARTITION BY RANGE (create_time)
用于:
分区可以:
WHERE create_time BETWEEN …
可以触发:
用 HASH / RANGE 分散写入
如果:
分区反而会:
分区数不要太多(建议 < 1000)
分区字段必须出现在查询条件中才有意义
分区不是索引替代品
你现在:
建议:
绝大多数表 → 不分区
只有日志 / 历史表 → 按时间分区
不是强制性要求的
TiDB 建表不是必须指定分区,默认创建的就是非分区表
满足以下条件,直接建普通非分区表即可,无需手动分区:
分布式数据库中,分区表发挥最大效能的前提:
数据量大 + 查询固定带分区键 + 数据可按时间 / 租户 / 范围自然拆分 + 历史数据可清理。
默认是自动region的96mb,不过你说的分区如果是分区表的话需要单独指定
不需要。如果表很大建议提前规划,特别是主键
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。