Postgresql 9.6从远程oracle db写入数据很慢

时间:2017-08-20 13:35:22

标签: oracle postgresql performance oracle-fdw

我在postgresql数据库中使用oracle_fdw扩展名。我试图将oracle数据库中许多表的数据复制到我的postgresql表中。我是通过运行var location来实现的。这个操作的性能非常慢,我试图检查原因,mybe选择了另一种选择。

1)第一种方法 - insert into local_postgresql_temp select * from remote_oracle_table这会产生7 M / s的总磁盘写入和4 M / s(iotop)的实际磁盘写入。对于32G表,它花了我2小时30分钟。

2)第二种方法 - Insert into local_postgresql_table select * from remote_oracle_table生成4 M / s的总磁盘写入和100 K / s的执行磁盘写入。复制实用程序假设非常快,但似乎非常慢。

- 当我从本地转储运行副本时,读取速度非常快300 M / s。

- 我在oracle服务器上创建了一个32G文件,用scp复制它,花了我几分钟。

-wals目录位于不同的文件系统上。 我指定的参数:

copy (select * from oracle_remote_table) to /tmp/dump

我如何增加写入?如何从oracle数据库到postgresql数据库更快地获取数据?

我在整个过程中运行perf并得到结果: enter image description here

1 个答案:

答案 0 :(得分:0)

我专注于你所说的快速的比特。

  

- 我在oracle服务器上创建了一个32G文件,用scp复制它,花了我几分钟。

     

- 当我从本地转储运行副本时,读取速度非常快300 M / s。

我建议你把这两者结合起来。使用转储工具(或SQLPLUS)将Oracle中的数据导出到Postgresql的COPY命令可以读取的文件中。你可以直接生成二进制文件格式,但它有点棘手,但生成CSV分离版本等,不应该太棘手。一个例子是How do I spool to a CSV formatted file using SQLPLUS?