如何让 Greenplum 4.2.3 只扫描预期的分区?

Posted

技术标签:

【中文标题】如何让 Greenplum 4.2.3 只扫描预期的分区?【英文标题】:How to make Greenplum 4.2.3 only scan the intended partition? 【发布时间】:2013-03-11 02:45:26 【问题描述】:

当我在视图中使用 unnest() 并在 select 语句中使用该视图时,Greenplum 似乎无法仅搜索预期的分区并搜索主表的所有分区。当使用子查询而不是视图时,同样的事情也适用。

例如:

Select something from (select unnest(an_array_field) from table_y) 
where date = 'somedate' and state = 'somestate'

我们目前有 2 个不同的服务器运行 2 个不同版本的 Greenplum。服务器 A 在旧版本 (4.2.1) 上运行,而服务器 B 在 4.2.3 上运行。运行上面相同的查询会产生不同的结果。服务器 A(旧)将在几秒钟内返回查询,而服务器 B(新)将永远返回。运行查询的解释表明服务器 A 只对其中一个分区进行扫描(在 where 子句中包含日期和状态),而服务器 B 将对每个分区进行扫描,从而导致速度缓慢。

两个数据库的表结构相同。运行没有嵌套的查询不会有问题。所以,我怀疑与新版本有关。有什么办法可以解决这个问题吗?

【问题讨论】:

【参考方案1】:

升级到更新版本的数据库。 4.2.5 是当前版本。即将发布的版本还将有一个新的查询规划器,如果升级到 4.2.5 没有,它也应该会有所帮助。

【讨论】:

你能告诉我从哪里得到这个版本或者它是否可用于评估目的?在主门户上查看,但我只能找到 4.2.2.4 这是社区版的最新版本,可免费下载。如需更新版本,您必须联系您当地的 Pivotal 代表。

以上是关于如何让 Greenplum 4.2.3 只扫描预期的分区?的主要内容,如果未能解决你的问题,请参考以下文章

Greenplum 实时数据仓库实践——Greenplum安装部署

greenplum 进行全盘扫描有啥优势?

如何让greenplum成为柱状数据库?

Greenplum gpload - 最后一个错误:最后一个预期列之后的额外数据

Greenplum数据库中的索引和集群

如何写一个计算器