OceanBase中,创建分区表时使用`PARTITION BY HASH(c1) PARTITIONS 8` ,数据会如何分布?

OceanBase中,创建分区表时使用PARTITION BY HASH(c1) PARTITIONS 8 ,数据会如何分布?

A. 所有数据都在同一个节点
B. 按c1哈希值分配到8个分区,各分区随机分布到节点
C. 按c1哈希值分配到8个分区,每个分区有独立的Leader和Follower副本
D. 自动创建8个数据库实例

1 个赞

正确答案是:B 和 C

详细解析:

  • 选项 B 正确PARTITION BY HASH(c1) PARTITIONS 8 的核心逻辑是,OceanBase 会对分区键 c1 进行哈希计算(如取模),将数据均匀地打散并分配到 8 个独立的物理分区中。同时,这 8 个分区会被随机分布到集群中的不同 OBServer 节点上,从而实现数据的水平拆分和负载均衡24。
  • 选项 C 正确 :在 OceanBase 的分布式架构中,分区(Partition)是数据分布、负载均衡和高可用的基本单位。每个分区都会通过 Paxos 协议生成多个副本(通常包含一个 Leader 副本和多个 Follower 副本),这些副本会被分布到不同的节点上,以保证数据的高可用和容错性3。
  • 选项 A 错误 :分区表的核心价值之一就是水平扩展和分散存储,数据会被打散到集群的不同节点上,而不是集中在同一个节点4。
  • 选项 D 错误 :分区表是在同一个 OceanBase 集群内部,将逻辑表物理拆分为多个分区(Partition),并不会自动创建 8 个独立的数据库实例1。

选择C
按 c1 哈希值分配到 8 个分区,每个分区有独立的 Leader 和 Follower 副本
写入数据时,对字段c1做哈希取模 8,均匀分配至 8 个逻辑分区;
OceanBase 每个分区(分片)是独立的 Paxos 副本组,拥有独立 Leader 主副本、Follower 备副本,实现高可用。

正确答案是:B C