设置 OceanBase MySQL 类型的表分区策略
示例:在数据源 mysql424 下数据库 test_424 中,对order表设置创建分区策略和删除分区策略。
信息项  | 示例值  | 
项目名称  | odc_4.2.0  | 
所属数据源  | mysql424  | 
数据库名称  | test_424  | 
表名称  | order  | 
在 SQL 窗口中,编辑 SQL 语句以创建表 order。

CREATE TABLE `order` ( `time` date NOT NULL, `parti_key` int(11), `name` varchar(120) DEFAULT NULL ) partition by range columns(time, parti_key) (partition p2023_01 values less than ('2023-01-01', 20230101), partition p2023_02 values less than ('2023-02-01', 20230201))在 SQL 开发窗口的 工单 页签中单击 分区计划 > 新建分区计划。

在 新建分区计划 面板中,单击
编辑分区策略。
在 设置分区策略 面板中,勾选 分区策略 项下的 创建策略 和 分区策略。

设置将要创建的分区数量。
创建规则。
如上图所示,可以对
order表中包含的time和parti_key分区键设置分区策略。time:该分区键类型为DATE,属于时间类型,因此其可以使用 顺序递增 作为分区创建策略。示例中,time分区键的创建策略是以当前时间(即分区计划任务实际运行时的时间)为基准时间,间隔 1 个月生成若干分区。parti_key:该分区键类型为INT,尝试使用 自定义 作为分区新建策略。假定需要以当前时间为基准,间隔 1 个月生成若干分区。参照 3 一节中的表述,该表达式可以按照如下步骤生成:获取分区生成的基准时间:由于是以当前时间为基准,可以直接使用
now()函数。定义分区生成的间隔:由于示例中是以 1 个月为间隔,因此在 创建规则 > 细则 > 间隔 中填入 1 作为固定间隔,且在步骤 1 表达式的基础上增加 interval 表达式,生成下一个分区。即
now () + interval ${INTERVAL} month,其中${INTERVAL}指代 创建规则 > 细则 > 间隔 中填入的值。生成对应分区键类型的分区表达式:
parti_key的类型为int,但步骤 1 中生成的表达式的类型为时间类型,需要将其转换为int类型。您可以先将其转成数字样式的字符串,再转换为int类型,即:cast(date_format(now() + interval ${INTERVAL} month, '%Y%m01') as signed)。其中,
CAST(xxx AS SIGNED):将字段转换成整数。DATE_FORMAT():将字段转换成日期格式。NOW():返回当前日期。说明在 ODC 中,还支持通过变量 ${LAST_PARTITION_VALUE} 引入当前数据库的分区上限值,例如
${LAST_PARTITION_VALUE} + interval ${INTERVAL} month表示从数据库最新的分区上限值进行后续分区生成。INTERVAL ${INTERVAL} MONTH:按月间隔表达式,${INTERVAL}为 ODC 定义的时间间隔函数固定用法。'%Y%m01':日期格式。
选择命名方式。
如上图所示,选择的命名方式为 前缀+后缀,该命名方式由一个固定字符串前缀和基于时间的可变后缀构成。
固定前缀:该前缀可由用户自由指定。
可变后缀:可选择时间类型的分区键对应的分区上界作为当前分区的命名后缀,另外可选时间的格式化输出格式以及时间的递增间隔。
配置完成后,单击 测试生成 按钮可以查看设置的分区名。
在 删除分区 项下,根据时间间隔设置预创建相应数量的分区,并选择删除后是否重建索引。
单击 分区策略 面板右下角的 预览 SQL 查看根据所设置的分区策略生成的 SQL 语句。

单击 确定,完成设置分区策略。
设置 OceanBase Oracle 类型的表分区策略
示例:在数据源 oboracle_430 下数据库 OBORACLE 中,对order表设置创建分区策略和删除分区策略。
在 SQL 窗口中,编辑 SQL 语句以创建表 order。

CREATE TABLE "OBORACLE"."order" ( "TIME" DATE NOT NULL ENABLE, "KEY" NUMBER(*,0) NOT NULL ENABLE, "NAME" VARCHAR2(120) DEFAULT NULL ) COMPRESS FOR ARCHIVE REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 partition by range("TIME", "KEY") (partition "p2024_01" values less than (TO_DATE(' 2024-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'),20240101), partition "p2024_02" values less than (TO_DATE(' 2024-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'),20240201));在 SQL 开发窗口的 工单 页签中单击 分区计划 > 新建分区计划。

在新建分区计划面板中,单击
编辑分区策略。
在 分区策略 面板中,勾选 分区策略 项下的 创建策略,创建分区策略。

设置将要创建的分区数量。
创建规则。
如上图所示,可以对
order表中包含的TIME和KEY分区键设置分区策略。TIME:该分区键类型为DATE,属于时间类型,因此其可以使用 顺序递增 作为分区创建策略。示例中,TIME分区键的创建策略是以当前时间(即分区计划任务实际运行时的时间)为基准时间,间隔 1 个月生成若干分区。KEY:该分区键类型为NUMBER,尝试使用 自定义 作为分区新建策略。假定需要以当前系统时间为基准,间隔 1 个月生成若干分区。参照 3 一节中的表述,该表达式可以按照如下步骤生成:获取分区生成的基准时间:由于是以当前系统时间为基准,可以直接使用
sysdate函数。定义分区生成的间隔:由于示例中是以 1 个月为间隔,因此在 创建规则 > 细则 > 间隔 中填入
NUMTOYMINTERVAL(1, 'MONTH')作为固定间隔,且在步骤 1 表达式的基础上增加 interval 表达式,生成下一个分区。即SYSDATE + ${INTERVAL},其中${INTERVAL}指代 创建规则 > 细则 > 间隔 中填入的值。生成对应分区键类型的分区表达式:
KEY的类型为NUMBER,但步骤 1 中生成的表达式的类型为时间类型,需要将其转换为NUMBER类型。您可以先将其转成数字样式的字符串,再转换为NUMBER类型,即:TO_CHAR(SYSDATE + ${INTERVAL}, 'YYYYMM"01"')。其中,
TO_CHAR:将字段转换成字符型。SYSDATE:返回当前系统时间。YYYYMM"01":日期格式。
选择命名方式。
如上图所示,选择的命名方式为 前缀+后缀,该命名方式由一个固定字符串前缀和基于时间的可变后缀构成。
固定前缀:该前缀可由用户自由指定。
可变后缀:可选择时间类型的分区键对应的分区上界作为当前分区的命名后缀,另外可选时间的格式化输出格式以及时间的递增间隔。
配置完成后,单击 测试生成 按钮可以查看设置的分区名。
在 删除分区 项下,根据时间间隔设置预创建相应数量的分区,并选择删除后是否重建索引。
单击 分区策略 面板右下角的 预览 SQL 查看根据所设置的分区策略生成的 SQL 语句。

单击 确定,完成设置分区策略。