【问题标题】:Spoon run slow from Postgres to OracleSpoon 从 Postgres 到 Oracle 运行缓慢
【发布时间】:2018-09-24 19:58:14
【问题描述】:

我有一个 ETL Spoon,它从 Postgres 读取表并写入 Oracle。 没有转变,没有排序。从表中选择 col1、col2、... col33。 输入 350 000 行。性能为 40-50 次/秒。

我尝试使用所有列(col1...col100)从 PS 到 PS 读取/写入同一张表我有 4-5 000 条记录/秒 如果我从 Oracle 读/写到 Oracle 也是一样:4-5 000 rec/sec 所以,对我来说,不是网络问题。

如果我尝试使用另一个表 Postgres 并且只有 7 列,则性能很好。

感谢您的帮助。

【问题讨论】:

  • 识别慢查询并调整它们。
  • 如果您的 Pentaho 作业使用 Oracle 输入和输出速度很快,但使用 Postgres 到 Oracle 时速度较慢,我会检查所有数据类型,看看它是否因某种类型转换而窒息。
  • 让我总结一下。 PS->PS 好,Oracle->Oracle:好,PS->Oracle:慢(慢 100 倍)。并且仅适用于大表(以列数计)。我说的对吗?
  • @Laurenz - 相同的查询!!!
  • @Alain 是的。同样对我们来说,问题是数据类型转换,但在数据仓库项目中,输入数据不同是正常的。 50转/秒?我很幸运只有 3-5 个 1M 行的表...

标签: oracle postgresql performance pentaho pdi


【解决方案1】:

在我的情况下也发生了同样的情况,从 Oracle 加载数据并在我的本地计算机 (Windows) 上运行时,处理速率为 40 r/s,但 Vertica 数据库为 3000 r/s。

我无法弄清楚确切的问题是什么,但我找到了增加行数的方法。它对我有用。你也可以这样做。

右击表格输入步骤,会看到“更改份数以开始”

请在 where 子句中包含以下内容,这是为了避免重复。因为当您选择“更改要开始的份数”选项时,查询将被触发 N 次并返回重复项,但在 where 子句中保留以下代码只会得到不同的记录

where ora_hash(v_account_number,10)=${internal.step.copynr}

v_account_number 在我的情况下是主键 10 是,例如你选择了 11 个副本来启动意味着,11 - 1 = 10 所以由你来设置。

请注意这会起作用,我建议你在本地机器上使用以进行测试,但在服务器上你肯定不会遇到这个问题。所以在部署到服务器时注释该行。

【讨论】:

  • 我认为问题不在输入中,而是在输出中,所以我猜“更改份数”的想法在输出步骤中运行良好,因为没有必要跟踪它是哪个副本,PDI 会将输出分类到不同的线程中。这个想法提出了接收端的 IOPS 问题,也许接收服务器有几个触发器会减慢插入/更新、生产时间/延迟时间,似乎有很多因素在起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-30
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多