oceanbase tablet大小是动态调整的吗?

看到这样一句话,说是tablet可以动态调整大小限制。

这里又有个默认值128MB?

到底会动态调整吗?

1 个赞

@论坛小助手

1 个赞

没这个参数 :joy:

1 个赞

Tablet 的总结

基本概念

  • 分区 (Partition):逻辑上的数据划分。
  • 分片 (Tablet):物理上的存储单元。

分区与 Tablet 的关系

  • 一个分区可以包含多个 Tablet,但一个 Tablet 只能属于一个分区(一对多关系)。

Tablet 的特性

  • 默认大小:128MB。
  • 自动分裂:当数据量超过默认大小时,Tablet 会自动分裂为多个更小的 Tablet。
  • 手动合并:支持手动合并 Tablet 以优化存储空间。
  • 自动分裂控制:从 V4.3.4 版本开始,auto_split_tablet_size 参数用于控制 Tablet 自动分裂的大小。

Tablet 与日志流

  • 日志流:记录了所有对 Tablet 数据的修改操作(如插入、更新、删除)。
  • Paxos 协议:通过 Paxos 协议将日志流中的变更操作同步到多个副本,确保数据一致性和高可用性。

总结

  • Tablet 是数据存储的基本单元。
  • 分区 是逻辑上的数据划分,而 Tablet 是物理上的存储单元。
  • 日志流Paxos 协议 共同协作,保证了 Tablet 数据的一致性和高可用性。

继续补充总结:

  • Tablet 是 OceanBase 中的逻辑存储单元,由多个 SSTable 组成。

  • 每个 SSTable 由多个 宏块 组成。

  • 每个 宏块 由多个 微块 组成。

  • 每个 微块 由多个 数据页 组成。

  • 分区 (Partition) 是逻辑上的数据划分。

  • Tablet 是物理存储"单元",负责实际存储数据。

  • SSTable 是Tablet 的物理存储"实现"。

1 个赞

我是4.2.1版本,难怪没有

下面是官方4.3.1的描述:
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000819416

所以要说版本,很多地方都自相矛盾(1:1 1:n 自动分裂这些),应该是某个版本引进的feature。

只是感觉有点乱,不知道以哪个为准。

@淇铭 老师

用户创建的单分区表会对应一个实际的Tablet,用户创建的多分区表每个分区会对应一个Tablet,表上的索引也会对应实际存储的Tablet,如果是单分区索引,则对应一个实际的Tablet,如果是多分区索引,则每个索引分区对应一个Tablet。表(Table)、分区(Partition)作为用户创建的逻辑对象,而Tablet作为实际承载数据的物理存储单位。

这个分区数据够大的情况下,是由多个tablet承载的吧?默认超过128MB。

说的这些都明白理解,就是分区和tablet的对应关系,有的地方看到说是1:1,有些地方说是1:N,超过一定阈值会自动分裂,还会动态调整。到底是怎样的?

1 个赞

我认为是这个意思,现在看到很多官方文档都是描述的1:1,一一对应

1 个赞

对于非分区表:单分区表会对应一个实际的Tablet 就是1:1关系
分区表:多分区表 每个分区会对应一个tablet 就是1:N
下面是图展示

1 个赞

我们学习是都是1:1,会不会在v4.3.4之后加这个参数后,就是1:N了呢。

sorry, 这个理解没问题,我的意思,一个分区对一个tablet,如果分区无限增大,会分裂多个tablet,来存放这个分区?

老师,言外之意分区表中,这里应该是每个表和tablet的对应关系是1:N

现在讨论的是分区partition和分片tablet的关系,个人觉得跟是否是分区表没有关系。

auto_split_tablet_size-V4.3.5-OceanBase 数据库文档-分布式数据库使用文档

我严重怀疑这个是一个分区数据大了,分多个tablet,像TiDB region=96MB一样。
TiDB region 默认96MB,自动分裂和合并。

3.x和4.x的不同 4.x引入的tablet的概念 3.x是分区概念 你把文档提供一下 我看看

我没有理解你说的 1:N应该就是图的这个关系 你说非分区表对应的tablet 1:N么?

@论坛小助手