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;
### OceanBase 数据库中的分区与副本 #### 分区表的创建与配置 在OceanBase数据库中,创建分区表可以通过指定分区键来实现。这允许数据按照特定规则分布在不同的物理节点上,从而提高读写效率和负载均衡能力[^1]。 对于一级分区表而言,语法结构如下所示: ```sql CREATE TABLE table_name ( column_definitions... ) PARTITION BY RANGE (partition_key_column) ( PARTITION partition_name VALUES LESS THAN (value), ... ); ``` 此命令定义了一个范围分区表,并指定了用于划分数据集的关键字段以及各分区间断点的位置。 #### 副本策略设置 为了保障系统的高可用性和容错性,OceanBase提供了灵活多样的副本机制。当创建租户时,默认会为其分配三个全量复制单元(Full Replica),即每份记录都会被保存三份拷贝并分布于集群内的不同服务器之上。管理员也可以自定义调整这一参数以适应实际需求[^5]。 通过`ALTER SYSTEM ADD REPLICA`语句能够增加现有分区上的额外副本来增强冗余度;而利用`DROP REPLICA FROM ZONE zone_name ON SERVER server_id;`则可移除不再需要的实例。值得注意的是,在执行上述操作之前应当充分评估其对业务连续性的潜在影响。 #### 动态管理和监控工具 除了静态设定外,OceanBase还内置了一系列动态管理功能帮助运维人员更好地掌控整个环境的状态变化情况。例如,借助於OCP平台提供的图形界面或者CLI接口下的专用指令集,可以方便快捷地查看当前所有活动着的数据块位置信息、健康状况统计报告等重要指标[^3]。 此外,针对可能出现的问题场景——比如某台机器发生故障导致局部不可用——系统自动触发重平衡过程重新安排剩余资源间的映射关系,确保服务始终处于最佳运行状态之下而不受单点失效事件干扰。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值