tidb中如何分表呢?
参考官方文档看看
create table PARTITION BY. PARTITION BY要用主键的字段
CREATE TABLE t (c int) SHARD_ROW_ID_BITS = 4 PRE_SPLIT_REGIONS = 4;
Range 分区、Range COLUMNS 分区、List 分区和 List COLUMNS 分区可以用于解决业务中大量删除带来的性能问题,支持快速删除分区。
Hash 分区和 Key 分区可以用于大量写入场景下的数据打散。与 Hash 分区相比,Key 分区支持多列打散和非整数类型字段的打散。
要不要用哈希分表呀!核心就是靠 SHARD_ROW_ID_BITS = 4 把数据打散到 16 个分片(2^4),PRE_SPLIT_REGIONS = 4 会提前分好 4 个 Region,避免后续热点。
如果是按时间 / 范围分表,直接用 PARTITION BY RANGE 更顺手,比如按日期分区存日志数据,查的时候只扫对应分区,速度更快~ 你是想按啥维度分表呀?
使用分布式的数据库,还有必要使用分表吗,
如果用hash分区, 如果我要删除一段时间的数据, 没办法多个程序同时处理. 如果按某个属性分区, 我可以按属性同时跑, 这样更快
分区就好,分表程序也不好处理.
分区表建议查阅官网的分区表部分介绍
跟mysql一样的分表处理就好
分布式数据库通过分区就可以使用和mysql分表的效果了
tidb分表有两种形式,原生分区表,手动分库分表
- 自动分表:利用 TiDB 内置的分片规则,基于自增 ID 或行 ID 自动拆分表,无需手动创建子表,操作简单且符合 MySQL 使用习惯。
- 手动分表:模仿传统分库分表的方式,手动创建多个子表,通过路由规则(如应用层或 TiDB 中间件)访问对应子表,灵活性更高但维护成本高。
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。