Нужно параллельное добавление на сторонние таблицы в PostgreSQL
Мы разработали fdw на основе postgres_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
0 ответов
Чтобы иметь возможность использовать Parallel Append
Все дети должны быть в безопасности, чтобы работать параллельно с работниками. postgres_fdw
пока не может гарантировать такую безопасность (даже в PostgreSQL 11), поэтому любые дочерние таблицы, которые управляются postgres_fdw
нельзя сканировать параллельно.