手动切分region的问题

版本:tidb 5.0.3
表的主键是auto_rand属性, 想提前对表做region切分。

CREATE TABLE `tb1` (
`id` bigint unsigned PRIMARY KEY CLUSTERED auto_random(5),
`stat_dt` varchar(10) DEFAULT NULL COMMENT '统计日',
`area` varchar(10) DEFAULT NULL COMMENT '市场区域',
`normalized_province` varchar(32) DEFAULT NULL COMMENT '市场省份',
`normalized_city` varchar(32) DEFAULT NULL COMMENT '市场城市',
...
...
KEY `ind_dt_area` (`stat_dt`,`area`),
KEY `index_stat_dt` (`stat_dt`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='tb1';

问题:
1 手动split 这个值的范围怎么划分,值是auto_rand自动生成的。 每天这个表会truncate 后重新灌一次。 auto_rand 值会变。

2 手动对表 t 进行切分,不在这个范围的记录插入进来后,比如小于1000 或者大于100000 会怎样?
SPLIT TABLE t BETWEEN (1000) AND (100000) REGIONS 16;

1赞

你用的是聚簇表,自带聚簇索引
image
image
https://docs.pingcap.com/zh/tidb/stable/sql-statement-split-region/#pre_split_regions

不建议对 聚簇表做手动切分,会影响性能
另外切分的时候,不光只考虑 值的写入,还要考虑索引的写入问题

1赞