0

我正在使用 PostgreSQL 的服务器编程接口(SPI) 来构建我的 postgres 扩展并执行我的查询。请参阅详细示例,或以下简单代码示例:

int ret = SPI_exec("SELECT * FROM ....", 0);

我们知道 PostgreSQL 具有并行查询支持功能,其中使用多个处理器并行执行查询。由于 SPI 接口隐藏了相当多的复杂性(通信/锁/光标/等),我想知道以这种方式执行查询是否会以某种方式限制这种并行查询功能?显然,如果它确实构成了限制,那么它可能不值得使用。

4

1 回答 1

3

您的示例中的具体用法不会抑制并行性,这可以SELECT execq('select count(*) from pgbench_accounts', 0);通过 auto_explain 运行和观察计划来看出。(我跑过pgbench -i -s20,所以有 2e6 行)。

其他 SPI 方法,如那些涉及游标的方法,将禁止并行化。

于 2020-02-18T14:19:38.997 回答