OceanBase 分布式存储管理
分布式存储管理
分区表管理
定义
- 把普通的表的数据按照一定的规则划分到不同的区块内,同一区块的数据物理上存储在一起。
- 每个分区还能按照一定的规则再拆分成多个分区,这种分区表叫做二级分区表。
分区分类
- range分区,最常见是按日/周/月分区
- list
- hash
- key
- 组合
创建分区表
创建分区表索引
副本管理
概述
- OceanBase 数据库是以表分区( Partition )为原子粒度进行管理的。
为了数据安全和提供高可用的数据服务,每个分区数据在物理上存储多份,每一份叫做分区的一个副本。
每个副本,包括存储在磁盘上的静态数据( SSTable )、存储在内存的增量数据( MemTable )以及记录事务的日志三类主要的数据。
根据存储数据种类的不同,副本有几种不同的类型,以支持不同业务在在数据安全,性能伸缩性,可用性,成本等之间的选择。
基础信息
- Log
本文中主要指与事务相关的 Clog 日志。
- MEMTable
表示目前内存中已经被读写更改过的数据,也可称之为内存表。
- SSTable
表示存储在磁盘中的基线数据。
当数据被事务读取或修改时,会暂存在 MEMTable 中。
合并发生时 MEMTable 中的数据会和 SSTable 中的数据进行合并形成更新版本的 SSTable。
副本类型
- 全能型
目前支持的普通副本,拥有事务日志、MEMTable 和 SSTable 等全部完整的数据和功能。
- 日志性副本
只包含日志的副本。
- 只读型
可以在业务对读取数据的一致性要求不高的时候提供只读服务。
新增副本
- 参考链接:新增副本
Locality管理
-
Locality 描述了表或租户下副本的分布情况。
-
查看
SELECT tenant_name,locality FROM oceanbase.gv$tenant;
-
修改表的 Locality
-
修改租户的 Locality