我在使用Postgres 9.5.4数据库执行查询方面遇到了困难,该数据库建立在另一个服务器上,通过外部数据包装器连接到Postgres 9.5.4的另一个实例。
我已经尝试过通过ALTER启用use_remote_estimate设置,但这似乎没有我想象的那么多。
通过FDW数据库发出的常规连接查询往往会花费超过3X的时间。
我研究过数据传输,在FDW上提供了更多的RAM和CPU,但没有成功。不管怎么说,似乎它甚至没有使用那么多的资源。
我读过Postgres 9.6中引入的用于FDW的连接和聚合推送,这看起来很棒,应该可以改善响应时间,但我不确定仅仅升级FDW Postgres服务器是否足够。我是否也需要升级连接到的主服务器?
我认为将Postgres升级到9.6会带来很大好处的查询的简单示例如下:
db=# EXPLAIN VERBOSE select max(add_date) from mytable;
QUERY PLAN
-------------------------------------------------------------------------------------------
Aggregate (cost=2084783.99..2084784.00 rows=1 width=8)
Output: max(add_date)
-> Foreign Scan on public.mytable (cost=100.00..1963010.07 rows=48709569 width=8)
Output: id, id_a, id_b, id_c, allowed, mod_date, add_date, idv
Remote SQL: SELECT add_date FROM public.mytable在生产中没有索引,也不会有索引,但在主服务器(5000万行)上完成大约需要10s,而在FDW服务器上则高达250个,我认为这是因为远程SQL正在将所有数据发送到服务器,以便使其能够进行聚合。
同样,要从9.6必须提供的内容中获益,我只需要升级具有FDW服务器和外部表的服务器上的Postgres实例,还是升级主服务器?
发布于 2017-03-21 13:48:02
连接和聚合推送应该在Postgres 10上运行,而不是Postgres 9.6,这就是为什么远程查询没有按我预期的方式发送。
https://dba.stackexchange.com/questions/167159
复制相似问题