表组SHARDING 属性中分区规则怎么理解?

表组SHARDING 属性中分区规则是指分区类型和分区个数还是只是指分区类型?

2 个赞

没理解想问什么,sharding是控制分区聚集方式的

2 个赞

分区规则包含分区数量么?比如这个题:
有如下的关联查询:
SELECT … FROM 11,12,13 WHERE T1.PART_KEY=12.PART_KEY AND T1.PART_ KEY=T3.PART_KEY AND T1.PART_KEY=10; 该查询访问的三张表其分区方式如下:
T1 表:PARTITION BY HASH(PART_KEY)PARTITIONS 4,
T2 表: PARTITION BY HASH(PART_KEY)PARTITIONS 6;
T3 表: PARTITION BY HASH(PART_KEY)PARTITIONS 8
因为需要关联访问位于不同OBServer 服务器上的分区,查询的性能低下。 为了提升查询性能,用户决定使用表组来进行分区的聚合, 请选择合适的表组SHARDING 属性:

1 个赞

是PARTITION吧,都是一级分区,跟随第一张表的相同分区号聚集

1 个赞

学习下

1 个赞

第一张表是指第一个分区表么?

1 个赞

同问,分区数量包括在分区规则中吗?

1 个赞

我也看到表组这儿了,需要扩展一下官方文档!简单总结表组分区规则相同,需要考虑分区类型,分区数量,分区值等三个信息!

对于 SHARDING 属性的表组,根据 SHARDING 属性值的不同,主要可以分为以下两大类:

  • SHARDING = NONE 的表组:此类表组内的所有表的所有分区均聚集在同一台机器上,并且不限制表组内表的分区类型。
  • SHARDING 不为 NONE 的表组:此类表组内每一张表的数据会打散分布在多台机器上。为了保证所有表的数据分布相同,还要求表组内所有表的分区定义一致,包括分区类型、分区个数、分区值等。系统会调度具有相同分区属性的分区聚集(对齐)在同一台机器上,从而实现 Partition Wise Join。SHARDING 不为 NONE 的表组,又分为以下两种:
    • SHARDING = PARTITION 的表组:表组内每一张表的数据按一级分区打散,如果是二级分区表,则一级分区下的所有二级分区聚集在一起。分区要求:所有表的一级分区的分区定义相同;如果是二级分区表,也只校验一级分区的分区定义。因此,一级分区表和二级分区表可以同时存在,只要这些表的一级分区的分区定义相同即可。分区对齐规则:具有相同一级分区值的分区聚集在一起,包括:一级分区表的一级分区和二级分区表对应一级分区下的所有二级分区。
    • SHARDING = ADAPTIVE 的表组:表组内每一张表的数据根据自适应方式打散。即,如果表组内的表是一级分区表,则按一级分区打散;如果表组内的表是二级分区表,则按每个一级分区下的二级分区打散。此类表组内表的分区要求及分区对齐规则如下:
      • 分区要求:表组内的表全部是一级分区表或者全部是二级分区表。如果是一级分区表,则要求一级分区的分区定义相同;如果是二级分区表,则要求一级分区和二级分区的分区定义都相同。
      • 分区对齐规则:如果表组内的表全部是一级分区表,则一级分区值相同的分区聚集在一起;如果表组内的表全部是二级分区表,则一级分区值和二级分区值均相同的分区聚集在一起。
        网址: 关于表组-V4.2.1-OceanBase 数据库文档-分布式数据库使用文档
1 个赞

感谢,这下理解了

又学习了一下,这种情况应该是NONE吧,无论是PARTITION还是ADAPTIVE,在一级分区情况下,都会按PARTITION策略。这样的话会按第一张表的一级分区号进行聚集,即
T1的第一个分区:0,4,8…
T2的第一个分区:0,6,12…
T3的第一个分区:0,8,16…
这样并不能很好的在第一个分区的位置聚集同样的T1 T2 T3的数据来达到在一个节点上查询的目的,也就不能提高查询效率。
而采用None方式,会把这三张表聚集到一个节点上,也就能提高查询效率了。
目前理解是这样的,互相讨论。

顶顶