【发布时间】:2020-02-21 17:02:39
【问题描述】:
查看here,很明显Oracle 支持与明确列出的场景并行执行DDL 命令。我想知道 Postgres 是否确实提供了这样的功能?我可以找到很多关于 PostgreSQL 的“并行查询”的材料,但在涉及 DDL 时就没有那么多了。
例如,我可以并行执行多个'CREATE TABLE...AS SELECT'吗?如果没有,我怎样才能实现这样的功能?如果我有一个临时表 (CREATE TEMP TABLE),会发生什么?我需要为锁配置一些东西吗?
【问题讨论】:
-
这些是索引重建,而不仅仅是任何类型的 DDL。它们可以并行化。
CREATE TABLE不需要并行化,例如,它是元数据操作。CREATE .. AS SELECT是 DML 的一半,该查询可以并行化。 -
"我可以并行执行多个 'CREATE TABLE...AS SELECT'" - 当然可以(只要它们不创建同一个表)。
-
Parallel和Concurrent是两个完全不同的东西。Parallel表示使用多个 CPU/线程在单个操作中处理大量数据。Concurrent表示同时进行多项操作。 -
@PanagiotisKanavos 为什么要强调并发和并行之间的区别?
-
@Zeruno 因为它很重要很多。如果您想让索引重建或从结果创建表更快,您正在寻找并行化,而不是并发。您不能通过手动运行 4 或 8 个 INSERT 操作来加快 INSERT,例如,它们最终会相互阻塞。
标签: postgresql ddl create-table postgresql-12 postgresql-parallel-query