【问题标题】:PostgreSQL parallel queries using SPI possible?使用 SPI 的 PostgreSQL 并行查询可能吗?
【发布时间】:2020-02-18 12:05:07
【问题描述】:

我正在使用 PostgreSQL 的 Server Programming Interface (SPI) 来构建我的 postgres 扩展并执行我的查询。请看this详细示例,或以下简单代码示例:

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

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

【问题讨论】:

    标签: postgresql postgresql-performance postgresql-12 postgresql-extensions postgresql-parallel-query


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-10-07
      • 2013-11-18
      • 2010-09-07
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 2019-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多