繁体   English   中英

Postgresql 9.6从外部表并行执行

[英]Postgresql 9.6 Parallel execution from foreign table

我将PostgreSQL从9.5升级到9.6,以便使用并行执行来提高性能。 但是,我没有成功使用它。 在我的主数据库中,几乎所有选择都是: select * from foreign_table外部表是位于oracle数据库上的外部表。 其中一些表是10G +和1,000,000+的大记录,因此在select的情况下,并行查询应该对我有很大帮助。

我配置的参数:

min_parallel_relation_size = 200MB
max_parallel_workers_per_gather = 2 
max_worker_processes = 8 

当我尝试使用解释分析从一个大表中选择*时,她的大小为1.5G并有5,000,000条记录,我只能看到外部扫描:

 Foreign Scan on customer_prod  (cost=10000.00..20000.00 rows=1000 
width=2438) (actual time=6.337..231408.085 rows=5770616 loops
=1)
  Oracle query: ......
 Planning time: 2.827 ms
 Execution time: 232198.137 ms

*我还尝试从* 1 = 1的foreign_table中选择*,但结果仍然相同。

另一方面,下一个代码有效:

   postgres=# CREATE TABLE people_mariel_test (id int PRIMARY KEY NOT NULL, age int NOT NULL);
   CREATE TABLE
   postgres=# INSERT INTO people_mariel_test  SELECT id, (random()*100)::integer AS age FROM generate_series(1,10000000) AS id;
   INSERT 0 10000000
   postgres=# explain analyze select * from people_mariel_test where age=6;
                                                            QUERY PLAN

   --------------------------------------------------------------------------------
   ------------------------------------------------
   ----------
   Gather  (cost=1000.00..123777.76 rows=50000 width=8) (actual        time=0.239..771.801 rows=99409 loops=1)
      Workers Planned: 1
      Workers Launched: 1
      ->  Parallel Seq Scan on people_mariel_test  (cost=0.00..117777.76 rows=29412 width=8) (actual time=0.045..748.213 rows=49704
    loops=2)
     Filter: (age = 6)
     Rows Removed by Filter: 4950296
    Planning time: 0.261 ms
    Execution time: 785.924 ms
   (8 rows)

知道如何继续吗?

文档

ForeignScan节点可以选择支持并行执行。 并行的ForeignScan将在多个进程中执行,并且在所有合作进程中仅应返回每一行一次。 为此,进程可以通过动态共享内存的固定大小的块进行协调。 不能保证此共享内存在每个进程中都映射到相同的地址,因此可能不使用指针。 通常,以下回调都是可选的, 但是如果要支持并行执行,则必须使用这些回调。

我已经搜索了Laurenz Albe的Oracle FDW的源代码,它没有实现IsForeignScanParallelSafe ,因此不能使用并行执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM