平行工没有使用BRIN指数。

问题描述 投票:0回答:1

我们目前正在运行一个查询,对行数执行一个非常简单的连接和分组,最后进行联合。

(select
table_p."name",
table_p.id,
count(table.id),
sum(table.views)
    from table
        inner join table_p on table_p.id = table.pageid
        where table.date BETWEEN '2020-03-01' AND '2020-03-31'
            group by table_p.id
            order by table_p.id)
union all
(select
table_p."name",
table_p.id,
count(table.id),
sum(table.views)
    from table
        inner join table_p on table_p.id = table.pageid
        where table.date BETWEEN '2020-02-01' AND '2020-02-29'
            group by table_p.id
            order by table_p.id)
union all ....

由于我们的表有3.6亿条记录,我们决定使用BRIN索引。如果需要的话,我们也可以选择使用B-Tree。

现在由于某些原因,我们在解释分析中看到BRIN索引的 "并行意识 "设置为false,计划输出中列出了两个工人?另外,我们还看到,当我们将查询的量进行拆分时,表现为线性,即5秒内查询一个月,20秒内查询四个月。我想这意味着我们是异步查询而不是并行查询。

有谁知道我们可能会缺少什么,以便在可能的情况下进行并行查询?BRIN是否不能与并行工人一起工作?

编辑:这是BRIN在 "table "上的索引。

CREATE INDEX table_brin_idx
    ON table USING brin
    (date, teamid, id, pageid, devicetypeid, makeid, modelid)
    TABLESPACE pg_default;

我的postgres版本是PostgreSQL 11.6 用Visual C++ build 1800编译的 64位版本

这里有一个解释分析的链接,太大了,不能发在这里。

postgresql indexing database-performance
1个回答
0
投票

信息来自PostgreSQL文档。目前,并行索引扫描只支持以下情况 榕树 指数。资料来源。https:/www.postgresql.orgdocs11parallel-plans.html#PARALLEL-SCANS

© www.soinside.com 2019 - 2024. All rights reserved.