使用pentaho 4.4.0中的“插入/更新”步骤时,数据加载速度很慢
我正在使用pentaho 4.4.0。在使用水壶中的“插入/更新”步骤时,与mysql相比,数据加载的速度太慢。此步骤将在插入之前扫描表中的所有记录。如果记录存在,它将进行更新。那么在进行“插入/更新”时应该如何优化性能。并且处理速度为4 r / s,所以我的记录总数将超过1万......这个过程需要2个半小时才能完成整个过程。
答案 0 :(得分:4)
根据您的评论,您似乎希望Merge rows (diff)
步骤后跟Synchronize after merge
。查看Pentaho wiki,了解这些步骤的工作原理。
另一个产生重大影响的事情是,有多少行导致upsert与总行数相比。如果导致写入的行数超过大约40%,@ carexcer的最后评论可能是更好的方法。如果不是,请务必尝试Merge rows (diff)
步骤。
4 - 每秒25行听起来很慢。确保您标记为键的字段已编入索引,无论您选择哪一步。
如果大多数行导致upsert,那么完全刷新可能会更好。如果是这种情况,请查看MySQL批量加载器。 Pentaho有批量和流量批量加载器,但我不知道它们有多好。
答案 1 :(得分:2)
尝试在字段交易大小(提交)上设置一个大值。
根据您要插入的行数,在该字段上设置更多或更少。
这在我的案例中提高了很多表现。
如果你将upsert,例如100.000行,那么500将是一个小值,因为它必须被提交200次。
提交次数少,执行速度更快。
答案 2 :(得分:1)
useServerPrepStmts - false
useCursorFetch - true
useCompression - true
您可以尝试编辑Connection并将这些参数放在那里。 这将提高性能。
双击数据库连接 - >选项标签 - >添加以上参数。
答案 3 :(得分: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);
我不是完美的方式