【问题标题】:MySQL and Java: Difference between fetch size and batch limitMySQL 和 Java:提取大小和批处理限制之间的区别
【发布时间】:2014-09-11 09:48:48
【问题描述】:

当我修改代码以使用 Java 进行 MySQL 检索的批量更新时,我产生了这个疑问。 我的理解是 fetch size 是 ResultSet 对象中的最大行数,而 Batch Limit 是可以添加到批处理中以进行批处理的选择/插入/更新查询的数量。如果我在这里错了,任何人都可以纠正我。

谢谢。

【问题讨论】:

标签: java mysql


【解决方案1】:

你几乎是正确的。但是要添加到它javadoc of Statement#setFetchSize()

给 JDBC 驱动程序一个关于应该是多少行的提示 从数据库中获取

而批处理限制与您可以插入或更新与max_allowed_packet相关的行数有关

附带说明:

您也可以将JDBC API implementation notes 视为好读物

结果集

默认情况下,ResultSet 被完全检索并存储在内存中。 在大多数情况下,这是最有效的操作方式,并且由于 MySQL网络协议的设计更容易实现。如果 您正在使用具有大量行的 ResultSet 或 值很大,并且无法在 JVM 中为 需要内存,您可以告诉驱动程序将结果流回 一次一行。

【讨论】:

  • 我认为我们可以将 fetchSize 与 Java 中的 MySQL 表一起使用,如此处所述。 link。你能澄清一下吗?
  • @user1930402:- 我们确实可以使用它,但这只是按照文档的说明给出提示。
  • 谢谢。让我试试这个。
  • @user1930402:- 不客气。你可以像这样使用它:PreparedStatement stmt = connection.prepareStatement(qry); stmt.setFetchSize(1000); stmt.executeQuery();
猜你喜欢
  • 2018-10-17
  • 2018-05-05
  • 2015-12-04
  • 1970-01-01
  • 1970-01-01
  • 2012-12-30
  • 1970-01-01
  • 2011-11-20
  • 1970-01-01
相关资源
最近更新 更多