2

postgres_fdw に基づいて fdw を開発しました。これは、データを圧縮したままにする大きなリポジトリ (ビッグ データ) での検索を実装します。postgres パーティション テーブルの概念を使用しようとしています。これにより、同時に多くのパーティションで検索を並列処理できるようになります。外部データ ラッパーには「並列追加」が必要です。

これがPostgres 11で対処されるかどうか知っている人はいますか?

クエリの結果がローカル パーティションで検索される場合、postgres は並列処理を使用しますが、外部スキャンの場合は使用しません。

ローカル パーティション:

explain select * from precio where fecha >= '2017-01-20' and fecha <= '2017-01-21' and plusalesprice < 1

Gather (cost=1000.00..969527.35 rows=81568 width=60)
 Workers Planned: 2
 -> Parallel Append  (cost=0.00..960370.55 rows=33986 width=60)
    -> Parallel Seq Scan on precio_20170121  (cost=0.00..589086.00 rows=19293 width=60)
       Filter: ((fecha >= '2017-01-20'::date) AND (fecha <= '2017-01-21'::date) AND (plusalesprice < '1'::numeric))
    -> Parallel Seq Scan on precio_20170120 (cost=0.00..371114.62 rows=14693 width=60)
       Filter: ((fecha >= '2017-01-20'::date) AND (fecha <= '2017-01-21'::date) AND (plusalesprice < '1'::numeric))

外部パーティション:

explain select * from precio where fecha >= '2017-01-01' and fecha <= '2017-01-02' and plusalesprice < 1

Append (cost=200.00..2650400.00 rows=20000000 width=60)
 -> Foreign Scan on precio_xdr20170101  (cost=200.00..1275200.00 rows=10000000 width=60)
    Filter: ((fecha >= '2017-01-01'::date) AND (fecha <= '2017-01-02'::date) AND (plusalesprice < '1'::numeric))
 -> Foreign Scan on precio_xdr20170102  (cost=200.00..1275200.00 rows=10000000 width=60)
    Filter: ((fecha >= '2017-01-01'::date) AND (fecha <= '2017-01-02'::date) AND (plusalesprice < '1'::numeric))

PostgreSQL 11 の外部テーブルへの並列追加

4

1 に答える 1

0

を使用できるようにするにはParallel Append、すべての子が並列ワーカーで安全に実行できる必要があります。 postgres_fdwその安全性はまだ (PostgreSQL 11 の時点でも) 保証できないため、 によって管理されている子テーブルをpostgres_fdw並列にスキャンすることはできません。

于 2018-12-06T05:30:02.500 に答える