我有 3 个运行速度非常慢的查询。所有这些通常都在做同样的事情:从 oracle 中的视图中选择(viw oracle_fdw 扩展)。所有视图看起来像这样:select / parallel (table_Name,4) / column1,column2,replace(column 3,' ',null),...,replace(...),column8 from table_name。
*我每个表都有 40 多列,所以我只是提到了查询的格式。
我在 postgresql 中运行的选择如下所示:
select * from oracle_table1_view;
table1 大小为 10G,有 100,000,000 条记录。
table2 大小为 1.3G,有 6,000,000 条记录。
table3 大小为 8G,有 75,000,000 条记录。
所有这些都是作为从 oracle db 获取数据的大函数的一部分发生的。在将数据导入到 postgresql 中的本地表之前,我删除了本地表的索引和约束,并在导入数据之后创建了它们。
关于我的服务器的一些信息:
我在服务器上有 5 GB RAM,其中 4 个是免费的。
我有 2 个 CPU
关于我的 Postgresql 实例的一些信息:
目前我在实例上只有 1 db。
shared_buffers = 1000MB
effective_cache_size = 2GB
autovacuum = on
work_mem = 4MB
此外,我有很多选择 * from foreign_Table。所有这些都需要一些时间,但是这 3 个都花费了太多时间。请帮助提高这 3 个的性能,如果可以的话,我的所有选择。