优化写入heroku Postgresql数据库

时间:2014-07-15 23:17:33

标签: java database postgresql heroku talend

我们正在处理很多我们使用Talend处理的传入事件,然后将它们推送到不同的postgresql数据库(本地和远程heroku数据库)。由于会话选项setAutoCommit(true),我们面临着巨大的性能损失,特别是在heroku数据库上(每个语句/插入都是一个必须提交的新事务)。

不幸的是,由于talend错误,我们不能批量提交以改善性能。由于生成的开销我想改变会话以进行异步提交但是在java.sql.Connection文档中我找不到任何有用的信息如何做。从talend到postgresql,我们使用单个持久连接。

我的问题是:

  • 可以通过java连接/驱动程序配置异步提交(postgresql 9.3)吗?我们希望在会话的基础上配置它,而不是为整个数据库配置它。
  • 我还有什么其他选择来减少交易开销?就像我说的每个插入现在都在每个事务中。
  • 还有其他选择吗?

链接:

1 个答案:

答案 0 :(得分:2)

我没有将PostgreSQL与Talend一起使用,但通常插件是分批完成的,而且它只是Talend的默认行为,它会自动提交它们 - 我认为这是你在这里看到的会话选项。

您可以尝试将您的工作设置为使用tPostgreSQLConnection,然后使用tPostgreSQLCommit OnSubjobOk完成它以立即执行提交。单个插入批次的性能无论如何都可能很差,但它应该改进。