【问题标题】:Best way to keep inserting large volume of data via JDBC. Batch insert or stored procedure?通过 JDBC 继续插入大量数据的最佳方式。批量插入还是存储过程?
【发布时间】:2014-06-04 08:30:56
【问题描述】:

我正在使用Spring 通过JDBC 连接到Sql Server 2008 R2

我所需要的只是尽可能快地将大量数据插入到数据库中的表中。我想知道哪种方式更好:

  1. 使用Spring批量插入提及here

  2. 在数据库中创建存储过程并在Java端调用

哪个更好?

【问题讨论】:

  • 您可能有更好的机会在dba.SE 获得更全面的答案。

标签: java sql sql-server spring jdbc


【解决方案1】:

这取决于存储的生产者会占用数据库时间的两件事,而批处理会占用程序端的时间。所以取决于你更关心的是什么,这真的取决于你。我更喜欢批处理,以保持数据库时间免费,减少可能发生的错误。希望这可以帮助!

【讨论】:

    【解决方案2】:

    Spring Batch 是一个优秀的框架,它可以用作数据库的 ETL(提取、转换、加载)工具。

    Spring batch 将任何导入作业分为 3 个步骤: 1.读取:从任何来源读取数据。它可以是任何其他数据库、任何文件(XML、CSV 或任何其他)或其他任何东西 2. 处理:处理输入数据,对其进行验证,并可以将其转换为您需要的对象。 3.保存:将数据保存到数据库或任何自定义文件格式

    当您需要具有重新启动/恢复功能的长时间运行的作业时,Spring 批处理非常有用。 此外,任何直接数据库导入工具(如用于 Oracle 的 impdp)都慢得多。 Spring批处理将其状态保存在数据库中,因此它是一种开销并且消耗很长时间。但是,您可以破解 Spring Batch 并使其不保存数据库中的状态,但会损失重新启动/恢复功能。

    因此,如果速度是您的主要要求,您应该选择一些特定于数据库的选项。 但是如果你需要做一些验证和/或处理 Spring 批处理是一个很好的选择,你只需要正确配置它。此外,Spring 批处理提供了可扩展性和数据库独立性。

    【讨论】:

    • 对不起,我说的是 Spring-JDBC 而不是 Spring Batch
    猜你喜欢
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 2018-03-25
    相关资源
    最近更新 更多