【问题标题】:Data loading is slow while using "Insert/Update" step in pentaho在 pentaho 中使用“插入/更新”步骤时数据加载很慢
【发布时间】:2014-01-25 00:24:50
【问题描述】:

在 pentaho 4.4.0 中使用“插入/更新”步骤时数据加载很慢

我正在使用 pentaho 4.4.0。在kettle中使用“插入/更新”步骤时,与mysql相比,数据加载的速度太慢了。此步骤将在插入之前扫描表中的整个记录​​。如果记录存在,它将进行更新。那么在执行“插入/更新”时应该做些什么来优化性能。并且处理速度是4 r/s,所以我的记录总共会在10万以上......这个过程需要2个半小时才能完成整个过程。

【问题讨论】:

    标签: pentaho data-integration


    【解决方案1】:

    使用 mysql 所有其他选项都不能正常工作 我尝试了一些作弊方法

    Insert into A(a,b) values (1,2);
    Insert into A(a,b) values (2,2);
    Insert into A(a,b) values (3,2);
    

    改成

    Insert into A(a,b) values (1,2), (2,2), (3,2);
    

    这是完美的方式

    【讨论】:

      【解决方案2】:

      useServerPrepStmts - 错误

      useCursorFetch - 真

      useCompression - true

      您可以尝试编辑连接并将这些参数放在那里。 这将提高性能。

      双击数据库连接->选项选项卡->添加以上参数。

      【讨论】:

        【解决方案3】:

        根据您的 cmets,听起来您需要 Merge rows (diff) 步骤,然后是 Synchronize after merge。查看Pentaho wiki 了解这些步骤的工作原理。

        另一个有很大区别的事情是有多少行导致了 upsert 与多少总行。如果导致写入的行数超过大约 40%,@carexcer 的最后一条评论可能是更好的方法。如果更少,请务必尝试Merge rows (diff) 步骤。

        每秒 4 - 25 行听起来很慢。确保您标记为键的字段已编入索引,无论您选择哪个步骤。

        如果大多数行导致更新插入,则完全刷新可能会更好。如果是这种情况,请查看 MySQL 批量加载程序。 Pentaho 有批处理和流式批量加载器,虽然我不知道它们有多好。

        【讨论】:

        • 谢谢您,先生,我使用了合并行(差异)步骤,然后是合并后同步...所以,现在我的流程为 111744 条记录执行了 1 分钟...但是当我使用插入/更新时我花了 2 个小时来记录 111744 条记录...
        • 好消息!正是出于这个原因,我倾向于不使用Insert/UpdateMerge rows (diff) 通常更快。如果这对您有用,您可以将我的答案标记为已接受吗?谢谢。
        • 感谢我使用了它,而且速度更快,但是插入/更新步骤与合并/同步步骤有何不同,为什么它更快。
        【解决方案4】:

        尝试在字段 Transaction Size (Commit) 上设置一个较大的值。

        根据您要插入的行数,在该字段上设置或多或少。

        这大大提高了我的性能。

        如果您要更新插入,例如 100.000 行,500 将是一个很小的值,因为它必须提交 200 次。

        更少的提交,更快的执行。

        【讨论】:

        • 感谢您的回复..如果我使用提交大小为 500 那么速度和以前一样.. 我可以这样做....
        • 您要加载多少行?如果 500 太慢,请尝试设置更大的值(10.000、20.000、50.000、100.000...,具体取决于您要插入的行数)。另一个问题...您有必要使用“插入/更新”步骤吗?过去,当我在数据仓库上加载事实表时,我遇到了同样的问题,在我的情况下,“输出表”步骤比“插入/更新”步骤快得多。请记住,更少的提交,更快的执行。
        • 是的..我只想要插入/更新..我的要求是如果找不到该行,它会插入该行。如果可以找到并且要更新的字段相同,则什么也不做。如果它们不完全相同,则更新表中的行。
        • 如果我使用提交大小为 100000,那么我的进程 id 的起始速度为 25 r/s,但在插入新记录时速度正在降低.. 所以在结束过程中速度为 4 r/ s....
        • 我认为您的流程存在瓶颈。你能提供更多关于你在做什么的信息吗? (例如过程快照)。我猜您正在加载数据仓库维度或事实。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-18
        • 1970-01-01
        • 1970-01-01
        • 2018-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多