PolarDB for PostgreSQL (Compatible with Oracle) は、並列追加機能をサポートして、大量のデータに対するクエリを高速化します。
概要
クエリを並行して実行することは、コンピューティングシステム内の多数のCPUコアを考慮すると、ほとんどの最新のデータベースシステムにおいて不可欠な特徴である。 これは、PolarDB for PostgreSQL (Compatible with Oracle) にも当てはまります。これは、パーティションに対するクエリを並列に処理してパフォーマンスを向上させることができます。

使用法
PolarDB for PostgreSQL (Compatible with Oracle) では、並列追加機能がデフォルトで有効になっています。
並列実行は、パーティション間で、パーティション内で、またはハイブリッド方式で実行することができる。
各モードにはコストモデルがあり、オプティマイザは最もコストの低いモードを選択します。
パーティション間の並列実行
このモードでは、各ワーカーがパーティションを処理し、並列に動作します。
例:
EXPLAIN (コストOFF) select * from prt1;
クエリ計画
-----------------------------------------------
収集
Workers Planned: 6
-> パラレル追加
-> prt1_p5のSeqスキャン
-> prt1_defaultのSeqスキャン
-> prt1_p4のSeqスキャン
-> prt1_p1のSeqスキャン
-> prt1_p2のSeqスキャン
-> prt1_p3のSeqスキャン
(9行) prt1パーティションテーブルには、prt1_p1、prt1_p2、prt1_p3、prt1_p4、prt1_p5、prt1_defaultの6つのパーティションがあります。 実行には6つのワーカーが使用され、それぞれが単一のパーティションで動作します。 クエリプランのParallel Append演算子は、この並列実行モードのインジケータです。
パーティション内での並列実行
このモードでは、パーティションテーブル全体が処理されるまで、複数のワーカーが同じパーティションを同時に処理してから次のパーティションに移動します。
EXPLAIN (コストOFF) select * from prt1;
クエリ計画
-----------------------------------------------
収集
Workers Planned: 6
-> 追加
-> prt1_p5のパラレルSeqスキャン
-> prt1_defaultのパラレルSeqスキャン
-> prt1_p4のパラレルSeqスキャン
-> prt1_p1のパラレルSeqスキャン
-> prt1_p2のパラレルSeqスキャン
-> prt1_p3のパラレルSeqスキャン
(9行) 6つのワーカーはすべて、prt1_p1、prt1_p2、prt1_p3、prt1_p4、prt1_p5、prt1_defaultパーティションのいずれかで連携してから、次のパーティションに進みます。
ハイブリッド並列実行
ハイブリッドモードでは、システムは、パーティション内およびパーティション間の両方で並列に実行を処理します。
EXPLAIN (コストOFF) select * from prt1;
クエリ計画
-----------------------------------------------
収集
計画されている労働者: 8
-> パラレル追加
-> prt1_p5のパラレルSeqスキャン
-> prt1_defaultのパラレルSeqスキャン
-> prt1_p4のパラレルSeqスキャン
-> prt1_p1のパラレルSeqスキャン
-> prt1_p2のパラレルSeqスキャン
-> prt1_p3のパラレルSeqスキャン
(9行) この例では、8つのワーカーが使用されます。