gpt4 book ai didi

java - 以非常小的插入将大量数据插入数据库

转载 作者:可可西里 更新时间:2023-11-01 06:37:04 25 4
gpt4 key购买 nike

所以我有一个数据库,其中有大量从 Java 应用程序插入的数据。通常我插入到表 1 中获取最后一个 ID,然后再次插入到表 2 中并从那里获取最后一个 ID,最后插入到表 3 中并获取该 ID 并在应用程序中使用它。我每 10-15 分钟插入大约 1000-2000 行数据。

在生产网络服务器上使用大量小的插入和选择并不是很好,因为它有时会使服务器陷入困境。

我的问题是:有没有一种方法可以在不使用如此大量的选择和插入的情况下将多个数据插入到表 1、表 2、表 3 中?是否缺少我缺少的 sql-fu 技术?

最佳答案

由于您可能依赖于 auto_increment 主键,因此您必须一次插入一个,至少对于 table1 和 table2。因为 MySQL 不会给你比最后生成的 key 更多的信息。

您永远不必选择。您可以使用 getGeneratedKeys() 方法从语句中获取最后插入的 ID。请参阅 Connector/J 的 MySQL 手册中的示例:

http://dev.mysql.com/doc/refman/5.1/en/connector-j-usagenotes-basic.html#connector-j-examples-autoincrement-getgeneratedkeys

其他建议:

  • 对表 3 使用多行 INSERT 语法。
  • 在导入时使用 ALTER TABLE DISABLE KEYS,并在完成后重新启用它们。
  • 使用显式事务。 IE。在您的数据加载例程之前开始一个事务,并在最后提交。我可能还会在每 1000 行 table1 之后提交。
  • 使用准备好的语句。

不幸的是,您不能使用最快的方法批量加载数据,LOAD DATA INFILE,因为这不允许您获取每行生成的 id 值。

关于java - 以非常小的插入将大量数据插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3136386/

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