基于表组的分区均衡

表组 TG0 的 SHARDING 属性为 ADAPTIVE,其中包含以下4个表:
· T1 :分区为 P0, P1
· T2 :分区为 P1, P2
· T3 :分区为 P2, P3
· T4 :分区为 P3, P4
那么表组 TG0 中的均衡组(Equilibrium Group)个数是多少?

这题如何理解?

等大佬们解答……
楼主有答案了没??这题我也不太理解

均衡组为1,每个表都是两个分区。。可以放进一个均衡组里

为啥是1?

666

-- 1. 创建 SHARDING 属性为 ADAPTIVE 的表组 tg0
CREATE TABLEGROUP tg0 SHARDING = 'ADAPTIVE';

-- 2. 创建四个结构相同的一级分区表,并加入表组 tg0

-- 创建表 t1,2 个分区
CREATE TABLE t1 (
    id INT PRIMARY KEY,
    name VARCHAR(50)
) TABLEGROUP = tg0
PARTITION BY RANGE(id) (
    PARTITION P0 VALUES LESS THAN (100),
    PARTITION P1 VALUES LESS THAN (200)
);

-- 创建表 t2,2 个分区
CREATE TABLE t2 (
    id INT PRIMARY KEY,
    value DECIMAL(10,2)
) TABLEGROUP = tg0
PARTITION BY RANGE(id) (
    PARTITION P1 VALUES LESS THAN (100),
    PARTITION P2 VALUES LESS THAN (200)
);
-- 创建表 t3,2 个分区
CREATE TABLE t3 (
    id INT PRIMARY KEY,
    info TEXT
) TABLEGROUP = tg0
PARTITION BY RANGE(id) (
    PARTITION P2 VALUES LESS THAN (100),
    PARTITION P3 VALUES LESS THAN (200)
);
-- 创建表 t4,2 个分区
CREATE TABLE t4 (
    id INT PRIMARY KEY,
    status TINYINT
) TABLEGROUP = tg0
PARTITION BY RANGE(id) (
    PARTITION P3 VALUES LESS THAN (100),
    PARTITION P4 VALUES LESS THAN (200)
);

SHOW TABLEGROUPS WHERE tablegroup_name = 'tg0';

MySQL [test]> select table_name, partition_name, svr_ip, role from  oceanbase.dba_ob_table_locations where database_name='test' and table_name like 't%' and role='leader';

1、dba_ob_table_locations 查询结果可以验证:

  • 边界值100的分区(t1-P0, t2-P1, t3-P2, t4-P3)都分布在10.xx.xx.35
  • 边界值200的分区(t1-P1, t2-P2, t3-P3, t4-P4)都分布在10.xx.xx.33

表组tg0的均衡组个数是:2

2、每个均衡组包含4个具有相同边界值的分区,分别分布在不同的节点上,实现了数据的均匀分布和查询的本地化执行。
3、均衡组不是按分区名称(P0,P1等)来分组的,而是按照分区边界值来划分的。

1 个赞

已学习!!!

版本4.2.1.10,按照相同库表结构构建,是1

obclient [demo]> select table_name, partition_name, svr_ip, role from  oceanbase.dba_ob_table_locations where database_name='demo' and table_name like 't%' and role='leader';
+------------+----------------+--------------+--------+
| table_name | partition_name | svr_ip       | role   |
+------------+----------------+--------------+--------+
| t1         | P0             | 10.186.61.29 | LEADER |
| t1         | P1             | 10.186.61.29 | LEADER |
| t2         | P1             | 10.186.61.29 | LEADER |
| t2         | P2             | 10.186.61.29 | LEADER |
| t3         | P2             | 10.186.61.29 | LEADER |
| t3         | P3             | 10.186.61.29 | LEADER |
| t4         | P3             | 10.186.61.29 | LEADER |
| t4         | P4             | 10.186.61.29 | LEADER |
+------------+----------------+--------------+--------+
8 rows in set (0.029 sec)

在 OceanBase V4 版本中,ADAPTIVE 表组的分区策略是自动进行负载均衡的。对于 ADAPTIVE 表组中的表,OceanBase 会将具有相同分区键的表分到同一个均衡组(Equilibrium Group)中,以实现数据的均匀分布和优化查询性能。

题目描述

  • 表组 TG0SHARDING 属性为 ADAPTIVE。 - 包含以下 4 个表: - T1:分区为 P0, P1
  • T2:分区为 P1, P2
  • T3:分区为 P2, P3
  • T4:分区为 P3, P4

分析

根据题目描述,我们可以看到每个表的分区情况:

  • T1: P0, P1
  • T2: P1, P2
  • T3: P2, P3
  • T4: P3, P4

在这种情况下,ADAPTIVE 表组会将具有相同分区键的表分配到同一个均衡组中。因此,我们可以通过分析分区键来确定均衡组的数量。

  • 分区 P0 只有 T1 使用。 - 分区 P1 由 T1 和 T2 共享。 - 分区 P2 由 T2 和 T3 共享。 - 分区 P3 由 T3 和 T4 共享。 - 分区 P4 只有 T4 使用。
    从上述分析可以看出:

  • 分区 P0 和 P4 各自只有一个表使用,因此它们各自形成一个均衡组。 - 分区 P1 由 T1 和 T2 共享,形成一个均衡组。 - 分区 P2 由 T2 和 T3 共享,形成一个均衡组。 - 分区 P3 由 T3 和 T4 共享,形成一个均衡组。

结论

表组 TG0 中的均衡组(Equilibrium Group)个数是 5 个。

希望这能帮助你理解这个问题!如果有更多问题,请随时提问。

前面测试的是这个版本:| 5.7.25-OceanBase-v4.2.1.11 | 企业版

再去5.7.25-OceanBase_CE-v4.3.5.3版本测试下:

手工均衡一下会有变化嘛

CALL DBMS_SCHEDULER.DISABLE('SCHEDULED_TRIGGER_PARTITION_BALANCE');
alter system set partition_balance_schedule_interval = '20s';

测了下和Primary zone还有关系,1-1-1的架构

-- Primary zone为zone1
obclient [oceanbase]> select TABLEGROUP_NAME,SHARDING,LS_ID,zone,table_name, partition_name, svr_ip, role from  oceanbase.dba_ob_table_locations where database_name='demo' and table_name like 't%' and role='leader';
+-----------------+----------+-------+-------+------------+----------------+--------------+--------+
| TABLEGROUP_NAME | SHARDING | LS_ID | zone  | table_name | partition_name | svr_ip       | role   |
+-----------------+----------+-------+-------+------------+----------------+--------------+--------+
| tg0             | ADAPTIVE |  1001 | zone1 | t1         | P0             | 10.186.61.29 | LEADER |
| tg0             | ADAPTIVE |  1001 | zone1 | t1         | P1             | 10.186.61.29 | LEADER |
| tg0             | ADAPTIVE |  1001 | zone1 | t2         | P1             | 10.186.61.29 | LEADER |
| tg0             | ADAPTIVE |  1001 | zone1 | t2         | P2             | 10.186.61.29 | LEADER |
| tg0             | ADAPTIVE |  1001 | zone1 | t3         | P2             | 10.186.61.29 | LEADER |
| tg0             | ADAPTIVE |  1001 | zone1 | t3         | P3             | 10.186.61.29 | LEADER |
| tg0             | ADAPTIVE |  1001 | zone1 | t4         | P3             | 10.186.61.29 | LEADER |
| tg0             | ADAPTIVE |  1001 | zone1 | t4         | P4             | 10.186.61.29 | LEADER |
+-----------------+----------+-------+-------+------------+----------------+--------------+--------+
8 rows in set (0.040 sec)

-- Primary zone为random
obclient [oceanbase]> select TABLEGROUP_NAME,SHARDING,LS_ID,zone,table_name, partition_name, svr_ip, role from  oceanbase.dba_ob_table_locations where database_name='demo' and table_name like 't%' and role='leader';
+-----------------+----------+-------+-------+------------+----------------+--------------+--------+
| TABLEGROUP_NAME | SHARDING | LS_ID | zone  | table_name | partition_name | svr_ip       | role   |
+-----------------+----------+-------+-------+------------+----------------+--------------+--------+
| tg0             | ADAPTIVE |  1001 | zone1 | t1         | P0             | 10.186.61.29 | LEADER |
| tg0             | ADAPTIVE |  1003 | zone2 | t1         | P1             | 10.186.61.30 | LEADER |
| tg0             | ADAPTIVE |  1001 | zone1 | t2         | P1             | 10.186.61.29 | LEADER |
| tg0             | ADAPTIVE |  1003 | zone2 | t2         | P2             | 10.186.61.30 | LEADER |
| tg0             | ADAPTIVE |  1001 | zone1 | t3         | P2             | 10.186.61.29 | LEADER |
| tg0             | ADAPTIVE |  1003 | zone2 | t3         | P3             | 10.186.61.30 | LEADER |
| tg0             | ADAPTIVE |  1001 | zone1 | t4         | P3             | 10.186.61.29 | LEADER |
| tg0             | ADAPTIVE |  1003 | zone2 | t4         | P4             | 10.186.61.30 | LEADER |
+-----------------+----------+-------+-------+------------+----------------+--------------+--------+
8 rows in set (0.031 sec)

1-1-1
primary_zone=zone1,zone2,zone3