OceanBase 一级表分区记录
前言:
好记性不如乱笔头,毕竟IT是用脑搬砖,熬夜就不用说了,时间长了容易强迫症(建议适当放宽心,跑步,散步,游走于城市的中心与角落,见证不一样的风景)。
记录一个关于OceanBasede一级分区表的创建,很久没有整过分区表了,记忆中还是关于Oracle,Mysql 的分区,还是模糊的。
业务需求说明:存在一张表,需要存放60个月的数据也就是5年,按每天存放,其中day不是唯一,全表中只有id唯一。
分区键说明: 分区键必须在主键或者联合主键中存在
range 分区需要注意限制的字段类型,不支持varchar等类型,所以采用range columns分区。
create table o_partition_day
(id varchar(100) not nul,
day varchar(50) not null,
.....
constraint pk_id primary key(id,day)
),
partition by range columns (day)
(
partition p1 values less than('20240925'),
partition p1 values less than('20240926'),
partition p1 values less than('20240927'),
partition p1 values less than('20240928'),
partition p1 values less than('20240929')
)
索引创建(Oracle 默认是本地索引,Mysql默认是全局索引):
示例:
#索引创建并未按照业务的逻辑创建,只是随手记录
CREATE INDEX i_global ON o_partition_day(id,day);
CREATE INDEX i_local ON o_partition_day(id,day) local;