使用 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 插入的主要内容,如果未能解决你的问题,请参考以下文章

使用 JDBC 迭代大表的最快方法

Java中的JDBC_part1

day22 Java语言中的------JDBC连接

Java连载130-JDBC编程初步

Java程序设计JDBC与数据库访问

Java程序设计JDBC与数据库访问