1

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

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

4

4 回答 4

4

根据您的评论,听起来您想要Merge rows (diff)step 后跟Synchronize after merge. 检查Pentaho wiki以了解这些步骤是如何工作的。

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

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

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

于 2014-01-07T17:48:13.507 回答
2

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

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

就我而言,这大大提高了性能。

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

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

在此处输入图像描述

于 2014-01-07T10:54:50.320 回答
1

useServerPrepStmts - 假

useCursorFetch - 真

使用压缩 - 真

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

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

于 2016-06-08T05:50:36.397 回答
0

使用 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);

我是完美的方式

于 2019-01-10T09:43:21.957 回答