すべてのプロダクト
Search
ドキュメントセンター

PolarDB:Parallel append

最終更新日:Jul 01, 2024

PolarDB for PostgreSQL は、パーティションテーブルの並列追加機能を提供します。 この機能により、パーティションテーブルは共通テーブルよりもパフォーマンスが向上します。

概要

並列クエリは、最新のデータベースにとって不可欠な機能です。 PolarDB for PostgreSQL は、共通テーブルよりもパーティションテーブルの並列クエリパフォーマンスを向上させます。

image.png

使用上の注意

デフォルトでは、並列追加機能はPolarDB for PostgreSQL クラスターで有効になっています。

並列追加は、パーティション間並列追加、パーティション内並列追加、およびハイブリッド並列追加とすることができる。

各並列追加メソッドには、独自のコストモデルがあります。 オプティマイザは最適なものを選択することができる。

パーティション間並列追加

パーティション間並列追加では、各ワーカーが1つのパーティションをクエリし、複数のワーカーがパーティションテーブル全体を並列にクエリできます。

例:

EXPLAIN (COSTS OFF) select * from prt1;
                  QUERY PLAN                   
-----------------------------------------------
 Gather
   Workers Planned: 6
   ->  Parallel Append
         ->  Seq Scan on prt1_p5
         ->  Seq Scan on prt1_default
         ->  Seq Scan on prt1_p4
         ->  Seq Scan on prt1_p1
         ->  Seq Scan on prt1_p2
         ->  Seq Scan on prt1_p3
(9 rows)

上記の例では、prt1パーティションテーブルにprt1_p1、prt1_p2、prt1_p3、prt1_p4、prt1_p5、およびprt1_defaultパーティションが含まれています。 テーブルには6つの並列作業員が使用されます。 各ワーカーは1つのパーティションを照会します。 Parallel Appendという演算子が使用されます。

イントラパーティション並列追加

パーティション内並列追加では、各パーティション内で並列クエリが実行されますが、パーティション間で順次クエリが実行されます。

EXPLAIN (COSTS OFF) select * from prt1;
                  QUERY PLAN                   
-----------------------------------------------
 Gather
   Workers Planned: 6
   ->  Append
         ->  Parallel Seq Scan on prt1_p5
         ->  Parallel Seq Scan on prt1_default
         ->  Parallel Seq Scan on prt1_p4
         ->  Parallel Seq Scan on prt1_p1
         ->  Parallel Seq Scan on prt1_p2
         ->  Parallel Seq Scan on prt1_p3
(9 rows)

上記の例では、6つのワーカーがprt1_p1、prt1_p2、prt1_p3、prt1_p4、prt1_p5、およびprt1_defaultパーティションをクエリします。 並列クエリはテーブル全体に対して実装されますが、シーケンシャルクエリはパーティション間で実行されます。

ハイブリッド並列追加

ハイブリッド並列追加では、並列クエリは、各パーティション内およびパーティション間の両方で実行されます。 これは、最高度の並列性を提供する。

EXPLAIN (COSTS OFF) select * from prt1;
                  QUERY PLAN                   
-----------------------------------------------
 Gather
   Workers Planned: 8
   ->  Parallel Append
         ->  Parallel Seq Scan on prt1_p5
         ->  Parallel Seq Scan on prt1_default
         ->  Parallel Seq Scan on prt1_p4
         ->  Parallel Seq Scan on prt1_p1
         ->  Parallel Seq Scan on prt1_p2
         ->  Parallel Seq Scan on prt1_p3
(9 rows)

上記の例では、8つのワーカーを使用して、各パーティション内とパーティション間の両方で並列クエリを実装しています。