请教使用下面2种方案预切分region 有啥区别吗?感觉还是使用PRE_SPLIT_REGIONS 方案 更简便
1)使用split table 方法:SPLIT TABLE table_name [INDEX index_name] BETWEEN (lower_value) AND (upper_value) REGIONS region_num
2)使用 PRE_SPLIT_REGIONS 方案:create table t (a int, b int) SHARD_ROW_ID_BITS = 4 PRE_SPLIT_REGIONS=3;
第一种split table:建表后,表中已经插入大量数据,发现数据不均匀分布,且表上发生大批量写入,或者查询造成热点,针对存在热点块,对热点块进行拆分。
第二种 SHARD_ROW_ID_BITS = 4 PRE_SPLIT_REGIONS=3;是在建表的前,就已经知道这个表非常大,主键是varchar 类型或者是组合索引,为了避免造成热点块问题,提前预先拆分
2 个赞
第二种 预先拆分,空region没被填充满的话 会在周期内被合并掉。
1 个赞
qizheng
(qizheng)
2021 年10 月 8 日 11:43
7
qizheng
(qizheng)
2021 年10 月 8 日 11:46
8
PRE_SPLIT_REGIONS 一般是用在建表后导入数据前提前 split 便于快速调度,split table 命令粒度更细对一段具体范围的数据或索引进行打散,适用于已知有局部热点的缓解。
如果split table是空表是否也相当于预切分regison
qizheng
(qizheng)
2021 年10 月 8 日 12:12
10
是的,split table 也可以对空表的 region 做预打散
因此从最佳实践来讲:相对来说空表使用pre_split_regions更简便,split table对于有数据的表。这样理解可以对吧
system
(system)
关闭
2022 年10 月 31 日 19:17
13
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。