OceanBase 数据库目前支持的分区策略如下:

  • MySQL 模式

    • RANGE 分区

    • RANGE COLUMNS 分区

    • LIST 分区

    • HASH 分区

    • KEY 分区

    • 组合分区

  • Oracle 模式

    • RANGE 分区

    • HASH 分区

    • 组合分区

RANGE 分区根据分区表定义时为每个分区建立的分区键值范围,将数据映射到相应的分区中。它是常见的分区类型,经常跟日期类型一起使用。例如,可以将业务日志表按日/周/月分区。

RANGE COLUMNS 分区

RANGE COLUMNS 分区与 RANGE 分区的作用基本类似,不同之处在于:

  • RANGE COLUMNS 分区的分区键的结果不要求是整型,可以是任意类型。

  • RANGE COLUMNS 分区的分区键不能使用表达式。

LIST 分区使得您可以显式的控制记录行如何映射到分区,具体方法是为每个分区的分区键指定一组离散值列表,这点跟 RANGE 分区和 HASH 分区都不同。LIST 分区的优点是可以方便的对无序或无关的数据集进行分区。

LIST COLUMNS 分区

LIST COLUMNS 分区与 List 分区的作用基本相同,不同之处在于:

  • LIST COLUMNS 分区的分区键不要求是整型,可以是任意类型。

  • LIST COLUMNS 分区的分区键可以是多列(即列向量)。

  • 不能指定数据的分区键的列表特征。

  • 不同范围内的数据大小相差非常大,并且很难手动调整均衡。

  • 使用 RANGE 分区后数据聚集严重。

  • 并行 DML、分区剪枝和分区连接等性能非常重要。

KEY 分区

KEY 分区与 HASH 分区类似,也是通过对分区个数取模的方式来确定数据属于哪个分区,不同的是系统会对 KEY 分区键做一个内部默认的 HASH 函数后再取模。

KEY 分区有如下特点:

  • KEY 分区的分区键不要求为整型,可以为任意类型

  • KEY 分区的分区键不能使用表达式

  • KEY 分区的分区键支持向量

  • KEY 分区的分区键中不指定任何列时,表示 KEY 分区的分区键是主键。

    示例如下:

在指定二级分区分区策略细节时,可以使用子句。此外,OceanBase 数据库的 Oracle 模式还支持模板化二级分区和非模板化二级分区。