在java中使用jdbc驱动程序的慢sqlite插入

时间:2009-07-30 00:39:35

标签: java sqlite jdbc performance

我刚将1百万条记录插入到一​​个包含五列的简单sqlite表中。使用jdbc驱动程序在java中花了18个小时!我在python2.5中做了同样的事情,花了不到一分钟。选择查询的速度似乎很好。我认为这是jdbc驱动程序的问题。

java中有没有更快的sqlite3驱动程序?

插入大量行的速度对于我的架构迁移脚本非常重要,如果不需要,我宁愿不必使用外部脚本来执行迁移。

编辑:用connection.setAutoCommit(false)修复; 感谢Mark Rushakoff向我暗示解决方案:)

2 个答案:

答案 0 :(得分:22)

您是否自动提交了查询?这可以解释为什么花了这么长时间。尝试将它们包装在开头/结尾,这样就不必为每个插件执行完整的提交。

This page解释了开始/结束事务,而FAQ触及了插入/自动提交。

答案 1 :(得分:2)

如果要进一步优化,可以考虑将插入查询批处理。因此,您可以将1000万个插入更改为1000个批次的1000个插入。