创建可在Greenplum数据库中追加的压缩表

Posted

技术标签:

【中文标题】创建可在Greenplum数据库中追加的压缩表【英文标题】:creating compressed table which is appendable in Greenplum Database 【发布时间】:2014-04-23 05:39:11 【问题描述】:

我用以下压缩逻辑创建了一些表

CREATE TABLE xyz
(
   DATE_HOUR TIMESTAMP, 
   MV CHARACTER VARYING (255), 
   VISITS NUMERIC
)
WITH (APPENDONLY = true, COMPRESSLEVEL = 1, ORIENTATION = column, COMPRESSTYPE = quicklz, OIDS = false)
DISTRIBUTED BY (      
   DATE_HOUR , 
   MV  , 
   VISITS);

表格确实被此逻辑压缩,但表格不可追加(因为 append only=true)。我既不能向该表添加值,也不能从中删除。

这种压缩逻辑或任何其他压缩逻辑是否可以压缩表并同时允许表可附加?

版本:"PostgreSQL 8.2.15 (Greenplum Database 4.2.3.2 build 1) on x86_64-unknown-linux-gnu, GCC gcc (GCC) 4.4.2 编译于 2013 年 1 月 10 日 18:27:37"

【问题讨论】:

这真的是 PostgreSQL 吗?或者您使用的是 Greenplum、ParAccel/Redshift 或类似的东西?什么是 PostgreSQL 版本? SELECT version()? 是的,我正在使用 greenplum。 修复了你的标签。 Greenplum 不是 PostgreSQL。如果您的问题与核心 PostgreSQL 功能相关,可以标记您的问题postgresql,只要您仍然提到您实际上正在使用 Greenplum。不过,这完全是 Greenplum 特有的,并且与常规 PostgreSQL 中不存在的功能有关,因此我删除了 PostgreSQL 标签。 (我在 Greenplum 上做的不多,所以我帮不了你) 【参考方案1】:

您以这种方式创建的表是可附加的,您可以轻松地将数据插入其中。但如果您使用的是 4.2.x 版本,则它是不可更新的,即您无法在此表上执行 UPDATE 和 DELETE 语句。

但是如果你升级到 4.3.x,这个表会变成可更新的压缩表,你可以更新/删除里面的数据。但是你的分发策略真的很奇怪,为什么要使用所有字段进行分发?您应该了解,这将阻止您更新数据,因为无法更新分发密钥。对于您拥有的表,我建议循环分配(“随机分配”)

【讨论】:

以上是关于创建可在Greenplum数据库中追加的压缩表的主要内容,如果未能解决你的问题,请参考以下文章

使用带有压缩的列存储但允许更新最近行的解决方案 - Greenplum

在 GreenPlum 中插入

Greenplum 实时数据仓库实践——Greenplum与数据仓库

Greenplum 实时数据仓库实践——Greenplum与数据仓库

GreenPlum 数据库创建用户文件空间表空间数据库

Greenplum - 外部表