1. 在目标数据库连接选项中增加下列参数
代码语言:javascript复制useServerPrepStmts=false
rewriteBatchedStatements=true
useCompression=true
useSSL=false
- useServerPrepStmts=false
关闭服务器端编译,sql语句在客户端编译好再发送给服务器端。如果为true,sql会采用占位符方式发送。
- rewriteBatchedStatements=true
常用于数据库连接为mysql。要批量执行的话,JDBC连接URL字符串中需要新增一个参数:rewriteBatchedStatements=true,并保证5.1.13以上版本的驱动,才能实现高性能的批量插入。默认情况下会无视executeBatch()语句,把批量执行的一组sql语句拆散,一条一条地发给MySQL数据库,批量插入实际上是单条插入,直接造成较低的性能。只有把rewriteBatchedStatements参数置为true, 驱动才会帮你批量执行SQL。另外这个选项对INSERT/UPDATE/DELETE都有效。
- useCompression=true
压缩数据传输,优化客户端和MySQL服务器之间的通信性能。
2. 适当提高数据集大小
选择转换设置,在杂项中进行设置 size_rowset(记录集合里的记录数)。
3. 调整提交记录数大小
加大“表输出”步骤中的“提交记录数量”。
4. 调整JVM大小
加大 .../data-integration/spoon.sh 文件中的 Xms、Xmx:
代码语言:javascript复制PENTAHO_DI_JAVA_OPTIONS="-Xms4096m -Xmx8192m -XX:MaxPermSize=256m"
- -Xmx:设置JVM最大可用内存。
- -Xms:设置JVM初始内存。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
必须注意:-Xmx必须小于等于系统内存的1/4,要不然会报错,-Xms不大于-Xmx。当系统内存为4G时-Xmx不能大于1G,当系统内存为8G时或更大时,java(JDK)版本必须是64位的才能识别出来,此时-Xmx可以为2G或更高。个人建议内存设置不要超付整个服务器内存的2/3。
5. 调整 MySQL 相关参数
代码语言:javascript复制bulk_insert_buffer_size=1073741824
innodb_buffer_pool_size=34359738368
innodb_flush_log_at_trx_commit=0
max_allowed_packet=1073741824
concurrent_insert=AUTO
innodb_autoinc_lock_mode=2
参考:
- kettle配置及性能调优
- Kettle性能调优汇总