OceanBase 子表分裂与合并

简介:

子表分裂由ChunkServer在定期合并过程中执行,由于每个子表包含多个副本,且分布在多台ChunkServer上,如何确保多个副本之间的分裂点保持一致成为问题的关键。OcanBase采用了一种比较直接的做法:每台ChunkServer使用相同的分裂规则。

由于每个子表的不同副本之间的基线数据完全一致,且定期合并过程中冻结的增量数据也完全相同,只要分裂规则一致,分裂后的子表主键范围也保证相同。

OcanBase曾经有一个线上版本的分裂规则如下:只要定期合并过程中产生的数据量超过256MB,就生成一个新的子表。假设定期合并产生的数据量为257MB,那么最后将分裂为两个子表,其中,前一个子表(记为r1)的数据量为256MB,后一个子表(记为r2)的数据量为1MB。接着,r1接受新的修改,数据量很快又超过256MB,于是,又分裂为两个子表。系统运行一段时间后,充斥着大量数据量很少的子表。

为了解决分裂产生小子表的问题,需要确保分裂以后的每个子表数据量大致相同。OceanBase对每个子表记录了两个元数据:数据行数row_count以及子表大小(occupy_size)。根据这两个值,可以计算出每行数据的平均大小,即:occupy_size/row count。

根据数据行平均大小,可以计算出分裂后的子表行数,从而得到分裂点。子表合并相对更加麻烦,步骤如下:
1)合并准备:RootServer选择若干个主键范围连续的小子表;
2)子表迁移:将待合并的若干个小子表迁移到相同的ChunkServer机器;
3)子表合并:往ChunkServer机器发送子表合并命令,生成合并后的子表范围。

【例】某OceanBase集群中有3台ChunkServer:ChunkServerl(包含子表A1、A3),ChunkServer2(包含子表A2、A3),ChunkServer3(包含子表A1、A2),其中,Al和A2分别为10MB,A3为256MB。RootServer 扫描RootTable后发现Al和A2满足子表合并条件,首先发起子表迁移,假设将Al迁移到ChunkServer2。使得Al和A2在相同的ChunkServer上,接着分别向ChunkServer2和ChunkServer3发起子表合并命令。

子表合并完成以后,子表分布情况为:ChunkServerl(包含子表A3),
ChunkServer2(包含子表A4(A1,A2).A3),ChunkServer3(包含子表A4(A1,A2)),其中,A4是子表Al和A2合并后的结果。
每个子表包含多个副本,只要某一个副本合并成功,OceanBase就认为子表合并成功,其他合并失败的子表将通过垃圾回收机制删除掉。

目录
相关文章
|
存储 调度 数据库
OceanBase存储引擎高级技术——内存数据落盘策略-合并和转储
OceanBase存储引擎高级技术——内存数据落盘策略-合并和转储
1081 0
|
存储 SQL 缓存
初探OceanBase的定期合并&数据分发
定期合并和数据分发都是将UpdateServer中的增量更新分发到ChunkServer中的手段,二者的整体流程比较类似:UpdateServer冻结当前的活跃内存表(Active MemTable),生成冻结内存表,并开启新的活跃内存表,后续的更新操作都写入新的活跃内存表。
13171 0
|
存储 监控 数据库
OceanBase由于合并操作导致事务被杀死的情况。
OceanBase是由蚂蚁金服和阿里巴巴自主研发的分布式关系型数据库。具有数据“零”丢失、可扩展、高性能、持续可用等特点,已广泛应用在阿里巴巴集团和蚂蚁金服集团。---源于OceanBase公众号。
3503 0
|
3月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
311 0
|
1月前
|
SQL 存储 人工智能
OceanBase CTO杨传辉谈AI时代下数据库技术的创新演进路径!
在「DATA+AI」见解论坛上,OceanBase CTO杨传辉先生分享了AI与数据库技术融合的最新进展。他探讨了AI如何助力数据库技术演进,并介绍了OceanBase一体化数据库的创新。OceanBase通过单机分布式一体化架构,实现了从小规模到大规模的无缝扩展,具备高可用性和高效的数据处理能力。此外,OceanBase还实现了交易处理、分析和AI的一体化,大幅提升了系统的灵活性和性能。杨传辉强调,OceanBase的目标是成为一套能满足80%工作负载需求的系统,推动AI技术在各行各业的广泛应用。关注我们,深入了解AI与大数据的未来!
|
3月前
|
Oracle 架构师 分布式数据库
OceanBase数据库的发展历程是什么?
【8月更文挑战第11天】OceanBase数据库的发展历程是什么?
176 63
|
3月前
|
Oracle 关系型数据库 MySQL
OceanBase数据库简介
【8月更文挑战第9天】OceanBase数据库简介
362 60
|
3月前
|
Oracle 关系型数据库 MySQL
OceanBase 与传统数据库的对比
【8月更文第31天】随着云计算和大数据技术的发展,分布式数据库因其高扩展性、高可用性和高性能而逐渐成为企业和开发者关注的焦点。在众多分布式数据库解决方案中,OceanBase作为一个由阿里巴巴集团自主研发的分布式数据库系统,以其独特的架构设计和卓越的性能表现脱颖而出。本文将深入探讨OceanBase与其他常见关系型数据库管理系统(如MySQL、Oracle)之间的关键差异,并通过具体的代码示例来展示这些差异。
254 1
|
3月前
|
关系型数据库 OLAP 分布式数据库
揭秘Polardb与OceanBase:从OLTP到OLAP,你的业务选对数据库了吗?热点技术对比,激发你的选择好奇心!
【8月更文挑战第22天】在数据库领域,阿里巴巴的Polardb与OceanBase各具特色。Polardb采用共享存储架构,分离计算与存储,适配高并发OLTP场景,如电商交易;OceanBase利用灵活的分布式架构,优化数据分布与处理,擅长OLAP分析及大规模数据管理。选择时需考量业务特性——Polardb适合事务密集型应用,而OceanBase则为数据分析提供强大支持。
953 2
|
3月前
|
存储 SQL 数据库
OceanBase数据库的分区策略
【8月更文挑战第13天】OceanBase数据库的分区策略
202 5