关于表组table group描述正确的是?
A、dba可以人工指定表组的分区leader分不到不同的unit上
B、表组内的分区leader会尽量聚集在相同的unit中,以便降低跨节点性能下降问题
C、表组内的分区leader由系统随机分散到不同unit上
D、表组内的分区leader可以尽量分散到不同的unit上,以分散ob server的负载
关于表组table group描述正确的是?
A、dba可以人工指定表组的分区leader分不到不同的unit上
B、表组内的分区leader会尽量聚集在相同的unit中,以便降低跨节点性能下降问题
C、表组内的分区leader由系统随机分散到不同unit上
D、表组内的分区leader可以尽量分散到不同的unit上,以分散ob server的负载
B应该是正确项。
表组(Table Group)是一个逻辑概念,表示一组表的集合。默认情况下,不同表之间的数据是随机分布的,随机分跨越多不同节点,容易产生分布式事务计算。
通过定义表组,可以控制一组表在物理存储上的邻近关系,简单理解就是根据分区策略后具有相同分区值的分区数据始终位于同一个OBServer主机上,从而避免了跨机器的访问,减少join时的跨机器的通信,提高数据库性能。
另外需要注意的是在 V3.x 版本中,表组为定义了分区的表组,其加入的表要求与表组的分区方式完全一致,限制了表加入表组,有较强的约束性;从 V4.2.0 版本开始,表组没有了分区概念,只需要定义 SHARDING
属性,就可以很灵活的将不同分区方式的表加入,如果想要限制别的表加入表组,可以修改表组的属性,表组管理更灵活。
[参考官网](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001052130)
我的简单理解:表组存在的价值就是将组内的所有leader聚集在一个unit,消除分布式数据库的节点之间数据传输的影响。
对于单节点的数据库类型,表组没有存在的价值吧。
不是将所有leader聚集在一个unit上,如果是分区表只是对应相同分区键的分区。
对于非分区表,如果是同一个事务里面会经常操作多个表,那么把这些表放一个表组里面也是有好处的,也可以减少跨节点的分布式事务。