在 OceanBase 数据库中,分区是指根据一定的规则,把一个表分解成多个更小的、更容易管理的部分。每个分区都是一个独立的对象,具有自己的名称和可选的存储特性。本章节主要介绍分区的相关概念以及使用分区的好处。
对于访问数据库的应用而言,在逻辑上的访问只有一个表或一个索引,但是实际上这个表可能由数十个物理分区对象组成,每个分区都是一个独立的对象,可以独自处理访问,也可以作为表的一部分处理访问。分区对应用来说是完全透明的,不影响应用的业务逻辑。
从应用程序的角度来看,只存在一个 Schema 对象。访问分区表不需要修改 SQL 语句。分区对于许多不同类型的数据库应用程序非常有用,尤其是那些管理大量数据的应用程序。
使用分区的好处如下:
提高了可用性
分区不可用并不意味着对象不可用。查询优化器自动从查询计划中删除未引用的分区。因此,当分区不可用时,查询不受影响。
更轻松地管理对象
分区对象具有可以集体或单独管理的片段。DDL 语句可以操作分区而不是整个表或索引。因此,可以对重建索引或表等资源密集型任务进行分解。例如,可以一次只移动一个分区。如果出现问题,只需要重做分区移动,而不是表移动。此外,对分区进行
TRUNCATE操作可以避免大量数据被DELETE。减少 OLTP 系统中共享资源的争用
在 TP 场景中,分区可以减少共享资源的争用。例如,DML 分布在许多分区而不是一个表上。
增强数据仓库中的查询性能
在 AP 场景中,分区可以加快即时查询的处理速度。分区键有天然的过滤功能。例如,查询一个季度的销售数据,当销售数据按照销售时间进行分区时,仅仅需要查询一个分区或者几个分区,而不是整个表。
提供更好的负载均衡效果
OceanBase 数据库的存储单位和负载均衡单位都是分区。不同的分区可以存储在不同的节点。因此,一个分区表可以将不同的分区分布在不同的节点,这样可以将一个表的数据比较均匀的分布在整个集群。




