不用担心,对于PDI来说,20百万条记录是一个小数字,如果表格打开输入,你就不会锁定它。这就是为什么 Bulk load 用于输出表而不是输入表。
Bulk load
然而,一个常见的初学者陷阱是 Truncate table 输出表上的选项。如果您运行(不充分或并行处理)两次输出步骤,则每个将锁定另一个。永远。
Truncate table
加快:你可以使用 Lazy conversion 复选框输入,以便数据保持字节格式,直到使用。但我不确定你是否在一个简单的输入/输出表上获胜。如果在输出文件上写入日期或Blob时发生错误,则错误消息将非常神秘。
Lazy conversion
您还可以通过增加提交大小来提高输出速度(最糟糕的是在Oracle中进行一些试验),并通过增加 number of rows in row set 这会增加读取的行数 table input 。要这样做,请右键单击任意位置 Properties/Miscelanous 。
number of rows in row set
table input
Properties/Miscelanous
我真正建议的是增加JVM内存大小。使用编辑器(记事本或更好)编辑名为的文件 spoon.bat 。你会在第94-96行找到一条包含类似“-Xmx256K”的行。将其更改为“-Xmx4096M”(其中4096是机器RAM大小的一半)。
spoon.bat
执行“批处理”有很多意义。其中一个正在酝酿之中 Make the transformation database transactional 。您可以使用上面提到的复选框进行操作 Number of row in rowset (并且拼凑为 Make the transformation database 在PDI最新版本)。选中该框后,如果出现问题,数据库的状态将回滚,就好像转换从未执行过一样。但我不建议你这样做。
Make the transformation database transactional
Number of row in rowset
Make the transformation database
另外还有@AlainD解决方案有几种选择: - 调整MySQL以获得更好的插入性能 - 在PDI中使用MySQL批量加载程序步骤 - 使用PDI将SQL语句写入文件,并使用mysql-binary读取它们
使用一些简单的JDBC连接设置可以提高速度。