[TOC] # 关于表组 表组(Table Group)不是一个的物理对象,它是一个逻辑概念,表示一组表或者表的集合。属于这样一个集合的表需要满足一定的约束,即所有表必须拥有相同的 Locality(副本类型、个数及位置)、相同的 Primary Zone(Leader 位置及其优先级)以及相同的分区方式。 通过定义表组,您可以控制一组表在物理存储上的临近关系。对于包含分区表的表组,它由若干个分区组(Partition Group) 组成,每一个 Partition Group 包含每个分区表的一个分区。属于同一个 Partition Group 的所有 Partition 系统会通过自动调度使得它们位于同一台 OBServer 服务器上,且这些分区副本的 Leader 也位于一台 OBServer 上。 表组中所有表的限制说明: * 分区类型需相同。 * 如果是 Key 分区,要求引用的列数相同,且分区个数相同(不要求列名相同)。 * 如果是 Hash 分区,要求分区个数相同。 * 如果是 Range Columns分区,要求引用的列数相同和分区数相同,且 Range 分割点相同(各 value 的规则相同)。 * 如果是 Range 分区,要求分区数相同,且 Range 分割点相同(各 value 的规则相同)。 * 对于二级分区,根据分区类型,限制如下: * 如果是 Key 分区,要求引用的列数相同,且分区个数相同(不要求列名相同)。 * 如果是 Hash 分区,要求分区个数相同。 * 如果是 Range Columns分区,要求引用的列数相同和分区数相同,且 Range 分割点相同(各 value 的规则相同)。 * 分区增减只支持 Range 分区的表组。 * 无法通过`ALTER TABLE SET table group`或`ALTER TABLE GROUP add table`语句表迁入到 OceanBase 数据库 V2.x.x 之前创建的表组中。 * 任何时候,将表加入 OceanBase 数据库 V2.x.x 之后创建的表组时,都会进行校验。如检查分区方式、Primary Zone 和 Locality 是否匹配。