提高查询性能——从oracle中选择数据到postgresql

improve query performance - selecting data from oracle to postgresql

我有 3 个查询运行非常慢。一般来说,所有这些都在做同样的事情:select 从 oracle 的视图(viw oracle_fdw 扩展)。所有的观点都是这样的: select /平行 (table_Name,4)/ column1,column2,replace(column 3,' ',null),...,replace(.. .), 来自 table_name.

的第 8 列

*每个 table 我有 40 多列,所以我刚刚提到了查询的格式。

postgresql 中的 selects i 运行 看起来像这样:

select * from oracle_table1_view;

所有这些都是从 oracle 数据库获取数据的大函数的一部分。在将数据导入 postgresql 中的本地 table 之前,我删除了本地 table 的索引和约束,并在导入数据后创建了它们。

关于我的服务器的一些信息:

关于我的 Postgresql 实例的一些信息:

目前我在实例上只有 1 db。

shared_buffers = 1000MB
effective_cache_size = 2GB
autovacuum = on
work_mem = 4MB

此外,我有很多 selects * 来自 foreign_Table。所有这些都需要一些时间,但那 3 个花费的时间太多了。请帮助提高这 3 个的性能,如果可以的话,我的 selects。

使用 sqlplus 执行查询时 运行 速度快吗?

如果不行,就得解决Orace这边的问题了

查看oracle_fdw、运行

使用的Oracle执行计划
EXPLAIN (VERBOSE) SELECT * FROM oracle_table1_view;

当您从 sqlplus 运行 时检查它是否与计划相匹配。如果不是,请尝试找出差异并找出原因。

如果计划看起来相同,但执行时间不同,可能是您 select 一些 LOB 列。如果涉及此类列,行预取将不起作用,因此对于每个 selected 行,将有一次从 PostgreSQL 到 Oracle 的往返,这会使事情变得非常慢。