Mycat2 icon indicating copy to clipboard operation
Mycat2 copied to clipboard

RANGE_HASH 优先选择第二个字段计算下标

Open dongshaofei666 opened this issue 3 years ago • 2 comments

我使用如下命令创建分片表:

CREATE TABLE db1.`tb1` (`id` bigint PRIMARY KEY AUTO_INCREMENT, a bigint, b bigint)
    dbpartition by RANGE_HASH(a,b,0) dbpartitions 2
    tbpartition by RANGE_HASH(a,b,0) tbpartitions 2;

自动创建的数据库、表,和 自动生成的配置如下: Snipaste_2022-05-23_15-08-23

然后插入如下数据:

insert into db1.tb1(a,b) values (0,1),(null,2),(null,3),(3,4),(4,5),(5,6),(16,48),(77,87);

只在分区(c0, db1_0, tb1_0) 和 (c1, db1_1, tb1_1) 插入了数据,情况如下: Snipaste_2022-05-23_19-51-41

可以看到,数据是以第二字段:b 计算分区下标的,按照《mycat2权威指南》的说明应该是按第一个字段:a 计算

dongshaofei666 avatar May 23 '22 12:05 dongshaofei666

我看到发生问题的代码大概在这里: Snipaste_2022-05-23_15-08-22

dongshaofei666 avatar May 23 '22 12:05 dongshaofei666

插入的数据,两个字段的值没有规律.用不了这个算法的

junwen12221 avatar May 23 '22 14:05 junwen12221