使用 java 中的 jdbc 驱动程序进行缓慢的 sqlite 插入
Posted
技术标签:
【中文标题】使用 java 中的 jdbc 驱动程序进行缓慢的 sqlite 插入【英文标题】:slow sqlite insert using the jdbc drivers in java 【发布时间】:2010-11-15 06:54:03 【问题描述】:我刚刚将 100 万条记录插入到一个包含五列的简单 sqlite 表中。使用 jdbc 驱动程序在 java 中花费了 18 个小时!我在 python2.5 中做了同样的事情,不到一分钟。选择查询的速度似乎不错。我认为这是 jdbc 驱动程序的问题。
在 java 中有没有更快的 sqlite3 驱动程序?
插入大量行的速度对我的架构迁移脚本很重要,如果不需要,我宁愿不必使用外部脚本来进行迁移。
编辑:用 connection.setAutoCommit(false) 修复; 感谢 Mark Rushakoff 提示我解决方案:)
【问题讨论】:
【参考方案1】:您的查询是否已自动提交?这可以解释为什么花了这么长时间。尝试将它们包装在 begin / end 中,这样它就不必为每次插入都执行完整的提交。
This page 解释开始/结束事务,而FAQ 涉及插入/自动提交。
【讨论】:
【参考方案2】:如果您想进一步优化,可以考虑将插入查询批处理在一起。因此,您可以将 100 万个插入更改为 1000 个批次的 1000 个插入。
【讨论】:
以上是关于使用 java 中的 jdbc 驱动程序进行缓慢的 sqlite 插入的主要内容,如果未能解决你的问题,请参考以下文章