0

根据我上面的问题,我需要在我的数据库的一个表中插入超过 2000 万行。根据性能,我正在寻找一种方法来提高这个过程的效率。我的第一个想法是用 Java.Thread 实现这一点,但我不太确定这是否足够节省。有人对我有什么好的建议吗?

编辑:我已经使用preparedStatement.addBatch()

4

3 回答 3

1

对我来说看起来很安全,前提是每个线程都使用不同的 Connection 对象,然后正确处理资源。

无论如何,请注意数据库本身对并发运行的请求有限制( MySQL 中的max_connections),因此它无助于创建比此数量更多的线程。此外,请考虑其他优化,例如批量插入

于 2013-02-27T09:17:02.883 回答
1

从不同的线程访问数据库并没有错。正如 Eyal 所写,只要确保像 Connections 这样的东西只能用于单个线程并正确处理。

另一个问题是,这是否真的有助于你的表现。我会确保您在使用多个线程之前完成了其他所有操作。特别是使用批处理语句似乎是您尚未研究的第一个选项。

于 2013-02-27T09:21:06.290 回答
0

如果我理解正确,您需要一种将数千个查询写入数据库的方法。你知道你可以执行一批 MySQL 查询吗?在 Java的 Stackoverflow 上已经有一个关于此的问题 :Insert multiple rows into MySQL with PreparedStatement

您可以使用: PreparedStatement#addBatch() http://docs.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html#addBatch%28%29

和 PreparedStatement#executeBatch() http://docs.oracle.com/javase/6/docs/api/java/sql/Statement.html#executeBatch%28%29

在上面的链接中查看@BalusC 的答案以获取更多详细信息。

于 2013-02-27T09:55:52.083 回答