我在我的 postgresql 数据库中使用 oracle_fdw 扩展。我正在尝试将 oracle 数据库中许多表的数据复制到我的 postgresql 表中。我通过运行来做到这一点insert into local_postgresql_temp select * from remote_oracle_table
。此操作的性能非常缓慢,我尝试检查原因并选择其他替代方案。
1)第一种方法 -Insert into local_postgresql_table select * from remote_oracle_table
这产生了 7 M/s 的总磁盘写入和 4 M/s(iotop)的实际磁盘写入。对于 32G 表,我花了 2 小时 30 分钟。
2)第二种方法 -copy (select * from oracle_remote_table) to /tmp/dump
生成 4 M/s 的总磁盘写入和 100 K/s 的实际磁盘写入。复制实用程序假设非常快,但似乎非常慢。
-当我从本地转储运行复制时,读取速度非常快 300 M/s。
-我在oracle服务器上创建了一个32G的文件,用scp复制,花了我几分钟。
- wals 目录位于不同的文件系统上。我分配的参数:
min_parallel_relation_size = 200MB
max_parallel_workers_per_gather = 5
max_worker_processes = 8
effective_cache_size = 12GB
work_mem = 128MB
maintenance_work_mem = 4GB
shared_buffers = 2000MB
RAM : 16G
CPU CORES : 8
我怎样才能增加写入?如何更快地将数据从 oracle 数据库获取到我的 postgresql 数据库?