oceanbase 的存储格式是什么, 是行存, 还是列存, 还是行列混合的?

oceanbase 的存储格式是什么, 是行存, 还是列存, 还是行列混合的?

【产品名称】

【产品版本】

【问题描述】


简单的回答 oceanbase 是采用行列混合的方式. 

OceanBase 数据库将磁盘切分为大小为 2MB 的定长数据块,称之为宏块(Macro Block),宏块是数据文件写 IO 的基本单位,一个 SSTable 就由若干个宏块构成。在宏块内部数据被组织为多个大小为 16KB 左右的变长数据块,称之为微块(Micro Block),微块中包含若干数据行(Row),微块是数据文件读 IO 的最小单位. 宏块是定长的,大小为固定的 2MB,长度不可以被调整;微块是变长的,默认值为 16KB,指的是数据被压缩前的大小. 

OceanBase 数据库是按照列进数据编码的。当一列经过编码后,成为定长存储时,OceanBase 数据库会对这一列在微块内使用列存进行存储. 

详情可以仔细阅读 https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.0/block-storage-sstable