0

我在论坛上创建了多个关于我遇到的性能问题的帖子,但现在在我进行了一些测试并收集了所有需要的信息之后,我正在创建这个帖子。

我有两张大桌子的性能问题。这些表位于 oracle 远程数据库上。我正在查询: insert into local_postgresql_table select * from oracle_remote_table.

第一个表有 45M 记录,大小为 23G。从 oracle 远程数据库导入数据需要 1 小时 38 分钟。之后,我在表上创建了 13 个常规索引,每个表需要 10 分钟 -> 总共需要 2 小时 10 分钟。

第二个表有 29M 条记录,大小为 26G。从 oracle 远程数据库导入数据需要 2 小时 30 分钟。创建索引需要 1 小时 30 分钟(有些是一列的索引,创建需要 5 分钟,有些是多列的索引,需要 11 分钟。

这些操作对我来说非常有问题,我正在寻找一种解决方案来提高性能。我分配的参数:

min_parallel_relation_size = 200MB
max_parallel_workers_per_gather = 5 
max_worker_processes = 8 
effective_cache_size = 2500MB
work_mem = 16MB
maintenance_work_mem = 1500MB
shared_buffers = 2000MB
RAM : 5G
CPU CORES : 8

- 我尝试在 oracle 和 postgresql 中从表中运行 select count(*),运行时间几乎相等。

- 在导入数据之前,我删除了索引和约束。

-我尝试将一个23G的文件从oracle服务器复制到postgresql服务器,花了我12分钟。

请建议我该如何继续?我该如何改进此操作中的某些内容?

4

0 回答 0