gpt4 book ai didi

java - 从文件中存储记录的更有效方法

转载 作者:行者123 更新时间:2023-11-30 09:20:05 25 4
gpt4 key购买 nike

最近在讨论中有人问我:您有一个 包含许多记录的平面文件,比如 500 万条。您需要编写一个 Java 程序,它可以从该文件中获取记录并将其存储在数据库中,例如通过 JDBC。什么是最有效的方法?

我的建议是创建:

  • 一个将处理 JDBC 连接的线程(另外可以使连接类成为单例)
  • 另一个将从文件中获取记录并保存在表中的线程。
  • 此外,当数据库中保存了一定数量的记录时,比如 100,然后先提交这些记录,然后继续。

这里存储过程会更好还是有其他方法?

最佳答案

听起来您的方法是正确的。

花费在网络 I/O 和 DB 操作上的成本和时间将远远大于文件 IO 和花费在平面文件上的解析时间。让单独的线程读取文件并为数据库准备记录可能会带来一些小的性能提升,但可能不值得增加复杂性,而且可能不值得 JVM 花在线程管理上的时间。我建议:

  • 1 个线程读取文件并提交数据库更新。
  • 正如 bitfiddler 所说,使用 PreparedStatements 对每条记录进行批量更新 (preparedStatement.addBatch()),并提交批量 (preparedStatement.executeBatch()) N”条记录。您可能想制作原型(prototype)以了解“N”的理想值是多少,但 100 是一个不错的起点。

我不推荐存储过程。如果您只是进行直线插入,它们对您的作用不大。

关于java - 从文件中存储记录的更有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17585350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com