不确定答案:为了提升查询性能,用户决定使用表组来进行分区的聚合,请选择合适的表组SHARDING属性:

有如下的关联查询: SELECT… FROM T1, T2, T3 WHERE T1.PART_KEY = T2.PART_KEY AND T1.PART_KEY = T3.PART_KEY AND T1.PART_KEY = 10;

三张表的分区方式分别如下:

T1表:PARTITION BY HASH(PART_KEY) PARTITIONS 6;

T2表:PARTITION BY HASH(PART_KEY) PARTITIONS 6;

T3表:PARTITION BY HASH(PART_KEY) SUBPARTITION BY HASH(SUB_PART_KEY) SUBPARTITIONS 3 PARTITIONS 6。

因为需要关联访问位于不同OBServer服务器上的分区,该查询的性能低下。为了提升查询性能,用户决定使用表组来进行分区的聚合,请选择合适的表组SHARDING属性:

A. ADAPTIVE

B. NONE

C. 任意SHARDING属性均可

D. PARTITION

正确答案:D. PARTITION

解析: 根据 OceanBase 的表组(Table Group)机制,不同的 SHARDING 属性对加入表组的表有不同的分区方式要求:

  • A. ADAPTIVE:要求表组内的表必须全部为一级分区表,或者全部为二级分区表。如果是一级分区表,要求一级分区的分区方式相同;如果是二级分区表,则要求一级分区和二级分区的分区方式均相同。由于题干中 T1 和 T2 是一级分区表,而 T3 是二级分区表,分区类型不一致,因此不能选择 ADAPTIVE。
  • B. NONE:会将表组内所有表的所有分区聚集在同一台机器上,通常用于数据量较小、单机即可承载的业务。题干明确指出单机承载不下,需要水平扩展,因此不适用。
  • D. PARTITION:支持一级分区表和二级分区表混合加入。其分区要求是:仅校验一级分区的分区方式是否相同(对于二级分区表,系统仅校验一级分区的分区方式)。题干中 T1、T2、T3 三张表的一级分区方式均为 HASH(PART_KEY),满足该条件。同时,PARTITION 模式会将具有相同一级分区值的分区聚集在一起,从而完美实现 Partition Wise Join,消除跨机访问,提升查询性能。

因此,最合适的表组 SHARDING 属性是 PARTITION。