PostgreSQL 是不是并行查询分区?

Posted

技术标签:

【中文标题】PostgreSQL 是不是并行查询分区?【英文标题】:Does PostgreSQL query partitions in parallel?PostgreSQL 是否并行查询分区? 【发布时间】:2016-11-25 02:44:37 【问题描述】:

Postgres 现在有并行查询。表分区时是否使用并行查询,查询在主表上,并且涉及多个分区(子表)。

例如,我按一天中的小时进行分区。然后我想计算一个多小时内的一种事件。可以在每个分区上进行聚合,最后将结果相加。

另一种方法是在分区(子表)之间使用联合。在这种情况下,Postgres 会并行执行。

【问题讨论】:

PostgreSQL 9.5 及更早版本:否。 PostgreSQL 9.6 及更新版本:检查查询计划。 explain analyze 在哪里?请编辑您的帖子以添加它。 【参考方案1】:

不,不并行查询分区。目前(9.6)只有表扫描使用并行执行。该表在可用的工作人员之间划分,每个工作人员扫描表的一部分。最后,主要工作人员将部分结果合并。

这样做的副作用是优化器更有可能在启用并行查询执行时选择全表扫描。

据我所知,没有计划基于分区(或全部联合)并行执行。添加此内容的建议已添加here。

编辑:我原来的答案是错误的。此答案已完全修改。

【讨论】:

您好,我已经发布并提交了here 我想知道当字段是函数(也包括表扫描)时,这种并行性是否可以帮助我进行表扫描。目前我使用的是 9.5,所以我正在考虑迁移到 9.6。

以上是关于PostgreSQL 是不是并行查询分区?的主要内容,如果未能解决你的问题,请参考以下文章

oracle 怎样使用并行查询

PostgreSQL:如何在函数中并行运行查询?

了解 PostgreSQL 并行查询的会话中工作池中剩余多少并行工作人员?

使用 SPI 的 PostgreSQL 并行查询可能吗?

PostgreSQl的分区表创建,插入数据,查询

PostgreSQL CTE 的一般并行性