PolarDB for PostgreSQL は、パーティションテーブルの並列追加機能を提供します。 この機能により、パーティションテーブルは共通テーブルよりもパフォーマンスが向上します。
概要
並列クエリは、最新のデータベースにとって不可欠な機能です。 PolarDB for PostgreSQL は、共通テーブルよりもパーティションテーブルの並列クエリパフォーマンスを向上させます。
使用上の注意
デフォルトでは、並列追加機能は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つのワーカーを使用して、各パーティション内とパーティション間の両方で並列クエリを実装しています。