Heap 存储和 AO 存储模型
Apache Cloudberry 支持 Heap 存储和 Appended-Optimized (AO) 存储两种模型。选择存储模型需要根据数据类型和查询类型来决定。本文档介绍这两种存储模型,并提供选择最优模型的参考建议。
Heap 存储
Apache Cloudberry 默认使用与 PostgreSQL 相同的 Heap 存储模型。Heap 表适用于 OLTP 类型的工作负载,这类工作负载通常在数据加载后会频繁修改。UPDATE
和 DELETE
操作需要存储行级版本信息,以确保数据库事务处理的可靠性。Heap 表更适合较小的表,例如加载后经常更新的维度表。
AO 存储
AO 表适用于数据仓库环境中的非规范化事实表。这些事实表通常是系统中最大的表,通常以批量方式加载,并通过只读查询访问。将大型事实表迁移到 AO 存储模型可以减少行级更新可见性信息的存储开销,从而实现更高效、更易优化的页面结构。AO 表的存储模型针对批量数据加载进行了优化,不建议使用单行 INSERT
语句。
创建具有指定存储选项的表
行存储的 Heap 表是默认存储类型。
CREATE TABLE foo (a int, b text) DISTRIBUTED BY (a);
使用 CREATE TABLE
命令的 WITH
子句指定表的存储选项。默认情况下,表会被创建为行存储 Heap 表。例如,要创建一个未启用压缩的 AO 表:
CREATE TABLE bar (a int, b text)
WITH (appendoptimized=true)
DISTRIBUTED BY (a);