每一个宏块内部都是由若干微块组成,微块是大小约 16KB 的变长数据块,其中包含若干数据行(Row)。
这个微块有没有最小大小和最大大小限制?还是只能是16KB的数据块?
每一个宏块内部都是由若干微块组成,微块是大小约 16KB 的变长数据块,其中包含若干数据行(Row)。
这个微块有没有最小大小和最大大小限制?还是只能是16KB的数据块?
根据提供的文档片段,微块的大小约为16KB(这是压缩前的大小),但是没有明确提到微块的最小大小或最大大小的限制。通常来说,16KB是OceanBase数据库中微块的一个标准大小,但实际大小可能会因压缩等因素有所不同。如果有更具体的大小限制需求,建议查阅官方文档或联系技术支持。
更多信息请查看:
在宏块内部数据被组织为多个大小为 16KB 左右的变长数据块,称之为微块(Micro Block),微块中包含若干数据行(Row),微块是数据文件读 IO 的最小单位。每个数据微块在构建时都会根据用户指定的压缩算法进行压缩,因此宏块上存储的实际是压缩后的数据微块,当数据微块从磁盘读取时,会在后台进行解压并将解压后的数据放入数据块缓存中。每个数据微块的大小在用户创建表时可以指定,默认 16KB,用户可以通过语句指定微块长度,但是不能超过宏块大小,语句如下。
ALTER TABLE mytest SET block_size = 131072;
一般来说微块长度越大,数据的压缩比会越高,但相应的一次 IO 读的代价也会越大;微块长度越小,数据的压缩比会相应降低,但相应的一次随机 IO 读的代价会更小。另外根据用户表模式的不同,每个微块构建的时候可能以平铺模式(Flat)或编码模式(Encoding)分别进行构建。在目前版本中,只有基线数据可以指定使用编码模式组织微块,对于转储数据全部默认使用平铺模式进行数据组织。
学习了