租户资源规划问题

在 OceanBase 中,创建租户时需要指定 UNIT_NUM 和资源规格。我不太清楚 UNIT_NUM 与租户并发能力、数据冗余的关系。例如,在三副本集群中,如果 UNIT_NUM = 1 ,租户的数据是分布在所有节点上,还是只集中在某个节点上?如果希望租户能利用所有节点的计算能力,UNIT_NUM 应该怎么设置?

3 个赞

@论坛小助手

1 个赞

在 OceanBase 数据库中,创建租户时指定的 UNIT_NUM 对应的是租户在每个 Zone 中所拥有的资源单元数量。对于一个三副本集群(即每个 Zone 有一个副本),UNIT_NUM 为 1 意味着每个 Zone 会有一个 Unit,这导致租户的数据会被均匀地分布在所有 Zone 中,而不是集中在一个节点上。

如果希望租户能充分利用所有节点的计算能力,需要确保每个 Zone 都有足够多的 Units 来支持租户的工作负载。例如,在一个三副本集群中,如果您希望租户能够在所有节点上高效运行,可以设置 UNIT_NUM 为大于 1 的值,这样在每个 Zone 中都会有多个 Units 分布,从而提高整体的并发处理能力和资源利用率。

然而,设置更高的 UNIT_NUM 也会增加租户所需的总资源量,因此需要根据实际的资源情况和业务需求进行合理配置。

详情请参考:

  1. 体验多租户特性
  2. 租户的资源管理
  3. 查看 OceanBase 集群资源的使用情况
1 个赞

资源单元池的设置跟业务场景和基础环境有很大关系

简单一点unit_num最大可以设置单个zone内的节点的数量,如果是3-3-3,那么你unit_num最大可以设置3,也可以设置成1和2。如果unit_num设置1,那么你的租户数据是单独放在zone内的某个服务器,如果设置成3,那么你的租户数据是分布在3个服务器

1 个赞

等回答

赞同

三副本的集群 节点最小是 3台,三副本的租户 是用一台节点能力还是三台节点能力 首先取决于 PRIMARY ZONE 的设置是一个 ZONE 还是多个 ZONE。这个时候 租户的 UNIT_NUM 默认是 1 ,不用改也改不了。

当集群规模扩容到 6台时(2-2-2),租户的节点依然是 3台(1-1-1)。如果 3 台同时用(PRIMARY_ZONE 设置为 RANDOM) 还不满足业务性能需求,在无法扩容租户资源单元规格的情况下,就考虑扩容租户的UNIT_NUM , 从 1 变为 2 ,则理论上租户能同时提供读写服务的节点数量就变为 6 台(2 * 3 = 6)了。

上面是理论。
至于如何将 3 台或 6台的性能充分发挥,还要看表结构设计、表组设计、业务 SQL 等多方面设计。