Oceanbase数据库的表组

关于表组

表组(Table Group)是一个逻辑概念,表示一组表的集合。默认情况下,不同表之间的数据是随机分布的,没有关系。通过定义表组,可以控制一组表在物理存储上的邻近关系。

在 V3.x 版本中,表组为定义了分区的表组,其加入的表要求与表组的分区方式完全一致,限制了表加入表组,有较强的约束性;从 V4.2.0 版本开始,表组没有了分区概念,只需要定义 SHARDING 属性,就可以很灵活的将不同分区方式的表加入,如果想要限制别的表加入表组,可以修改表组的属性,表组管理更灵活。

对于 SHARDING 属性的表组,根据 SHARDING 属性值的不同,主要可以分为以下两大类:

  • SHARDING = NONE 的表组:此类表组内的所有表的所有分区均聚集在同一台机器上,并且不限制表组内表的分区类型。

  • SHARDING 不为 NONE 的表组:此类表组内每一张表的数据会打散分布在多台机器上。为了保证所有表的数据分布相同,还要求表组内所有表的分区定义一致,包括分区类型、分区个数、分区值等。系统会调度具有相同分区属性的分区聚集(对齐)在同一台机器上,从而实现 Partition Wise Join。

    SHARDING 不为 NONE 的表组,又分为以下两种:

    • SHARDING = PARTITION 的表组:表组内每一张表的数据按一级分区打散,如果是二级分区表,则一级分区下的所有二级分区聚集在一起。

      分区要求:所有表的一级分区的分区定义相同;如果是二级分区表,也只校验一级分区的分区定义。因此,一级分区表和二级分区表可以同时存在,只要这些表的一级分区的分区定义相同即可。

      分区对齐规则:具有相同一级分区值的分区聚集在一起,包括:一级分区表的一级分区和二级分区表对应一级分区下的所有二级分区。

    • SHARDING = ADAPTIVE 的表组:表组内每一张表的数据根据自适应方式打散。即,如果表组内的表是一级分区表,则按一级分区打散;如果表组内的表是二级分区表,则按每个一级分区下的二级分区打散。

      此类表组内表的分区要求及分区对齐规则如下:

      • 分区要求:表组内的表全部是一级分区表或者全部是二级分区表。如果是一级分区表,则要求一级分区的分区定义相同;如果是二级分区表,则要求一级分区和二级分区的分区定义都相同。

      • 分区对齐规则:如果表组内的表全部是一级分区表,则一级分区值相同的分区聚集在一起;如果表组内的表全部是二级分区表,则一级分区值和二级分区值均相同的分区聚集在一起。

基于表组的分区均衡

OceanBase 数据库依据表组的 SHARDING 属性,相应地划分表组内表和分区的均衡组,并基于均衡组进行组内均衡和组间均衡,达到不同表、分区的聚合与均衡的目的。

基于表组(Table Group)的 SHARDING 属性进行组内均衡的策略:

相关推荐
海兰6 小时前
【数据库】tdsql(mysql8.0)优化思考三
数据库·redis
煎饼学大模型7 小时前
Agent 的“大脑-手“解耦架构:当推理层和工具执行层各自独立演进
数据库·人工智能·oracle·架构·agent
muddjsv11 小时前
SQLite数据库文件机制详解:journal、wal、shm文件作用与备份避坑
数据库·sqlite
吴声子夜歌12 小时前
MongoDB 4.2——应用程序设计
数据库·mongodb
数字新视界12 小时前
动环监控可视化在数据中心管理中的应用与实践解析
数据库·物联网·解决方案·动环监控·大榕树
极地野狼 音乐哔哔12 小时前
数据库备份恢复的原理实践
数据库
互联网中的一颗神经元13 小时前
小白python入门 - 25. SQL 与表设计入门
数据库·python·sql
ttwuai13 小时前
AI 生成后台改数据后,操作日志别只记按钮:Go + MySQL 怎么验
数据库·人工智能·mysql·golang
KaMeidebaby13 小时前
卡梅德生物技术快报 | 核酸适配体文库测序:核酸适配体文库测序的技术原理、实验流程与数据解析
前端·网络·数据库·人工智能·算法
ClouGence14 小时前
除了 DBeaver,2026 年还有哪些好用的开源数据库管理工具?
数据库·开源