PostgreSQL 的并行计划是通过查询规划器生成的,并涉及将一个查询划分为多个并行执行的片段。以下是一些有关 PostgreSQL 并行计划的关键概念:

1. 并行计划节点类型:
   - 在 PostgreSQL 中,一些查询计划节点支持并行执行。例如,Gather 节点用于收集并行工作者的结果,Parallel Seq Scan 节点用于并行顺序扫描等。

2. 并行顺序扫描:
   - 当 PostgreSQL 判断对一个大型表执行顺序扫描可能更加高效时,可以使用并行顺序扫描。表将被划分为多个范围,每个工作进程负责扫描其中的一部分。
   EXPLAIN SELECT * FROM your_table WHERE some_condition;

   输出中可能包含 Parallel Seq Scan 节点。

3. 并行合并连接:
   - 当执行连接操作时,PostgreSQL 可能会使用并行合并连接。这涉及到多个工作进程并行地处理连接操作,然后将结果合并。
   EXPLAIN SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column;

   输出中可能包含 Gather Merge 节点。

4. 并行计划的动态调整:
   - PostgreSQL 具有动态调整并行计划的能力。系统可以在执行期间动态调整并行工作者的数量,以适应实际的执行情况。

5. 设置并行工作者数量:
   - 通过设置 max_parallel_workers 和 max_parallel_workers_per_gather 的值,你可以指定允许并行查询使用的最大工作者数量。
   -- 例如,设置最大并行工作者数量为 4
   SET max_parallel_workers = 4;

6. 并行计划限制:
   - 并非所有类型的查询都适合并行执行。某些查询可能会由于其性质而无法充分利用并行性。PostgreSQL 的查询规划器会根据查询的特性和环境条件,选择是否使用并行计划。

7. 并行计划的监控:
   - 你可以通过查看 pg_stat_statements 和 pg_stat_activity 等系统视图,来监控并行查询的性能和执行情况。

要深入了解查询计划和并行执行的详细信息,你可以使用 EXPLAIN 或 EXPLAIN ANALYZE 命令来查看查询计划,以及是否使用了并行计划。例如:
EXPLAIN ANALYZE SELECT * FROM your_table WHERE some_condition;


转载请注明出处:http://www.zyzy.cn/article/detail/8244/PostgreSQL