从读写角度,带你了解数仓的IO基本框架
摘要:本文从读取和写入的角度分别描述了行存和列存的IO模型,并对文件结构做了简单介绍。 本文分享自华为云社区《GaussDB(DWS)基本IO框架》,作者: Naibaoofficial。 行存IO管理框架 存储结构 OID(Object identifiers):对象的唯一标识。 每个表存在对应数据库的文件夹中,用relfilenode标识。 例如表row1,可以直接查询对应的文件 test=# select pg_relation_filepath('row1'); pg_relation_filepath ---------------------- base/16385/55984 (1 row) 每个表的读取写入以页(文件块)为基本单位,页的大小是一个BLCKSZ,默认8KB,其结构如下: Tuple保存了当前一行的数据,分为Header和Data两块,头部保存元组的相关信息(列数,事务信息,是否有Toast表等)。 每个Tuple最大为2kb,若Data过大无法压缩至2KB,则采用额外的Toast表存储,此时Tuple内的Data保存Toast表的相关信息。 Gau...