基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
分区表设计
更新时间:2025-03-25 15:12:41
本文介绍在 OceanBase 中进行分区表结构设计的推荐设计。
关于分区表创建时的注意事项。
如果数据量很大并且访问比较集中时,可以在创建表时使用分区表。
分区表在表创建的时候需要指定,后续不支持将非分区表在线改造成分区表,也不支持分区数量、分区类型、分区键值的在线调整。
善用 Tablegroup 技术。
如果多张表通过各自的分区键进行关联,且分区键的分区策略一致,比如都是 hash 分区,且分区数也相等,可以把多张表通过 tablegroup 技术放到一个表组中提高关联效率。
分区表约束注意事项。
建分区表时,表上的每一个主键、唯一键所对应的字段里都必须至少有一个字段包含在表的分区键字段中。
分区表中的全局唯一性建议能通过主键实现的都通过主键实现。
分区表的唯一索引必须包含表分区的拆分键。
关于分区策略,推荐从表的实际用途和应用场景方面进行设计。
实际用途:历史表,流水表。
应用场景:存在明显访问热点的表。
关于分区键的选择,使用分区表时要选择合适的拆分键以及拆分策略。这里仅做选择分区类型的基本推荐,更详细的内容请参见 创建和管理分区表。
hash 分区:选择区分度较大、在查询条件中出现频率最高的字段作为 hash 分区的分区键。
range 和 list 分区:根据业务规则选择合适的字段作为分区键,但分区数量不宜过少。示例:如果是日志类型的大表,根据时间类型的列做 range 分区。
关于分区的使用限制。
hash 分区下,不适合基于分区字段进行范围查询。