/data/1/cluster_name/sstable/block_file,请详细讲解下block_file文件的使用、文件格式、数据如何组织存储等信息
1 个赞
根据文档库中的信息,以下是关于 block_file
文件的详细讲解:
1. Block File 的使用
- 在 OceanBase 数据库中,
block_file
是用于存储数据的文件。它位于/OBServer 节点安装目录/store/sstable
目录下,并在 OBServer 节点启动后创建。 -
block_file
文件的大小由配置项datafile_size
或datafile_disk_percentage
控制(参考:OBServer 节点安装目录结构 → 数据文件目录)。
2. Block File 的文件格式
- 具体的文件格式未在文档中明确提及,但可以推测其内部以宏块(Macro Block)为单位组织数据,每个宏块大小为 2 MB。
- 宏块内部又划分出很多个 16 KB(压缩前的大小)大小的微块(Micro Block),而每个微块里面包含多个行(Row)。
3. 数据如何组织存储
- 宏块与微块:OceanBase 数据库的数据文件以宏块(Macro Block)为单位组织数据。每个宏块占用 2 MB 空间,宏块内包含一个或者多个微块,每个微块内包含一行或者多行数据(参考:表存储)。
- 聚集索引表模型:OceanBase 数据库中使用聚集索引表模型来组织数据,即存储时按照表的主键顺序来存储数据。当往表中插入一行数据时,会按照其主键的顺序插入到表中(参考:表的组织形式)。
- 列存储顺序:每行存储的列顺序是一样的。OceanBase 数据库通常是按照建表时的列顺序来存储,新加的列都放在最后一列存储(参考:表的组织形式)。
4. 动态扩容机制
- 对于 V4.2.0 之前的版本,系统主要采用预分配的方式,将一部分磁盘空间预留给数据文件,这种方式虽然保证了数据文件占有一段尽可能连续的磁盘空间,但也导致了磁盘空间的浪费。
- 从 V4.2.0 版本开始,OceanBase 数据库引入了数据文件渐进式使用磁盘空间的用户配置选项,即系统先预分配一个合理的磁盘大小给数据文件,再根据磁盘的实际使用情况和用户的配置进行自动扩容(参考:配置磁盘数据文件的动态扩容 → 背景信息)。
综上所述,block_file
文件是 OceanBase 数据库中用于存储数据的核心文件,其内部以宏块和微块的形式组织数据,并且支持动态扩容以优化磁盘空间的使用。
检索到的文档如下:
2 个赞