当前位置: 首页 > 知识库问答 >
问题:

如何在JdbcTemboard中使用获取大小来处理2000万行?

淳于枫
2023-03-14

我有一个包含2000万行的表,由于OutOfMemoryError,我无法使用单个查询选择所有行。我读到了fetchSize属性,看起来它可能有助于解决我的问题,因为它是常见的建议

但我对如何应用它有疑问。

我有以下代码:

private final JdbcTemplate jdbcTemplate;
...
    jdbcTemplate.setFetchSize(1000);
    List<MyTable> myList= this.jdbcTemplate.query(
                "SELECT * FROM my_table",
                new Object[]{},
                MyTableMapper.INSTANCE
        );
    mylist.foreach(obj->processAndSave(obj));

看起来jdbc驱动程序会为每个请求选择1000。但是我应该怎么做才能处理所有2000万行呢?

我应该调用jdbcTemplate吗。查询几次?

共有1个答案

边翔宇
2023-03-14

您可以根据光标获取结果

如果您使用的是PostgreSQL 11请求:

  1. setFetchsize

标准配置示例

spring.datasource.hikari.auto-commit=false
spring.jdbc.template.fetch-size=50

此外,如果您想在存储库类之外处理结果,您可以结合queryForStream

Stream<MyTable> stream = jdbcTemplate.queryForStream(SQL,  MyTableMapper.INSTANCE);

PostgreSQL文档:发出查询并处理结果

https://jdbc.postgresql.org/documentation/head/query.html

 类似资料:
  • 问题内容: 我有一个使用JDBC的Java应用程序,该应用程序每天在服务器上运行一次,并与也在同一服务器上运行的MySQL数据库(v5.5)进行交互。该应用程序正在查询并遍历表中的 所有 行。 该表目前很小(约5000行),但将无限期地增长。我的服务器内存有限,我不认为应用程序的内存消耗不确定。 如果我在运行查询之前使用过,我不清楚这里发生了什么。例如,如果我使用类似: 这是如何适当控制潜在的大型

  • 问题内容: 我需要使用Java在Apache Solr中获取索引的总大小。以下代码获取文档总数,但是我正在寻找大小。并通过使用ReplicationHandler,我想我可以得到此链接上某人告诉的索引大小。http://lucene.472066.n3.nabble.com/cheking- the-size-of-the- index-using-solrj-API-s- td692686.ht

  • 问题内容: 我正在用Java开发SMS应用程序。我的客户通过SMS发送查询,查询将以HTTP请求的形式通过SMS网关转发给我的服务器。现在,我的应用程序处理了请求,并通过SMS网关再次将响应发送回客户端。最多仅发送300个字符作为响应。我期望流量很高(每秒2000个请求)。我想将我的应用程序托管在一些虚拟主机公司(考虑mochahost)。托管之前我应该​​考虑哪些因素(RAM,CPU等的中间因素

  • 问题内容: 我使用以下代码实例化了一个对象: 如何获得此文件的大小? 是什么区别,和? 问题答案: 使用类中的方法。从javadocs: 返回此抽象路径名表示的文件的长度。如果此路径名表示目录,则未指定返回值。 对于问题的第二部分,直接来自的javadocs: 返回此抽象路径名所命名的分区上该虚拟机可用的字节数 返回此抽象路径名命名的分区的大小 返回此抽象路径名所命名的分区中未分配的字节数

  • 问题内容: function foldersize($path) { $total_size = 0; $files = scandir($path); 在脚本执行完成之前,为什么处理器使用率会过高或100%升高?可以做些什么来优化它吗?还是有其他方法可以检查文件夹和其中的文件夹大小? 问题答案: 以下是其他地方提供的其他解决方案: 如果在Windows主机上: 否则,如果在Linux主机上:

  • 本文向大家介绍如何在C#中获取文件大小?,包括了如何在C#中获取文件大小?的使用技巧和注意事项,需要的朋友参考一下 FileInfo类用于处理文件及其在C#中的操作。 它提供了用于创建,删除和读取文件的属性和方法。它使用StreamWriter类将数据写入文件。它是System.IO命名空间的一部分。 Directory属性检索代表文件父目录的对象。 DirectoryName属性检索文件的父目录