【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】ob4.*
【问题描述】请问ob 数据库中Tablet是 按什么规则切分的数据?是给分区键指定的分区规则吗?是不是类似于tidb的 region的概念? partition和tablet 的关系?
在oceanbase里面是这样,一个tablet里面包含了一套完整的LSM Tree,一套LSM Tree中包含基线sstable、转储sstable、memtable这些。如果一张表没有分区,也没有任何索引,也不包含lob字段,那么这张表就只会有一个tablet。
但如果构建了索引,那么索引表也是一套完整的LSM Tree,所以索引表也会是一个单独的tablet。
那就是说 tablet就是partition呗,只不过一个是物理上的,一个是逻辑上的
在 OceanBase 数据库中,Tablet 和 Partition 密切相关但并不完全等同。Tablet 是数据的物理存储单位,具备存储数据的能力,支持在机器之间迁移,是数据均衡的最小单位。每个分区(Partition)对应一个 Tablet。具体来说,单分区表会创建一个 Tablet,多分区表会为每个分区创建一个 Tablet。然而,Tablet 的概念更为底层,不仅仅是一个逻辑上的划分。例如,索引表的每个分区也会对应一个 Tablet,包括局部索引表和全局索引表。局部索引表的 Tablet 与主表 Tablet 会强制绑定,保证存储在一台机器上。因此,虽然 Tablet 和 Partition 在某些方面相似,但 Tablet 更加关注于数据的物理存储和管理。
关于 Tablet 的切分规则,确实是由分区键(Partition Key)决定的。分区键用于确定数据行属于哪个分区,进而确定对应的 Tablet。这与 TiDB 中的 Region 概念有一定的相似性,但具体实现和用途有所不同。Region 主要用于 TiKV 的数据分片和复制,而 Tablet 则是 OceanBase 中数据存储的基本单位。
具体信息可参考以下文档: