获取大数据集的 JDBC ResultSet 内部机制

2024-03-25

JDBC 结果集是否在 SQL 查询的一次网络调用中获取所有数据?考虑查询select * from table where timestamp > 1597937895。现在该查询有超过 100 万行。结果集是否在一次网络调用中获取所有行?或者当读取结果集时它是否会获取一批行?因为我还需要查看内存使用情况。因此澄清一下。我知道 ResultSet 在一次网络调用中获取所有数据。这是唯一的行为还是有其他方法告诉结果集批量获取数据?


获取行和批处理的确切行为因数据库系统和驱动程序而异。有些将始终批处理,有些将 - 默认情况下 - 一次获取所有行,而有些则取决于结果集类型或其他因素。

默认情况下,MySQL Connector/J 驱动程序将在执行时获取内存中的所有行。可以使用批量大小将其更改为行流式传输或基于游标的提取,如文档中所述JDBC API 实现说明 https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-implementation-notes.html under 结果集:

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

要启用此功能,请创建一个Statement实例中的 以下方式:

stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
              java.sql.ResultSet.CONCUR_READ_ONLY); 
stmt.setFetchSize(Integer.MIN_VALUE); 

只进、只读结果集与提取的组合 大小Integer.MIN_VALUE充当驱动程序进行流传输的信号 逐行结果集。此后,使用创建的任何结果集 语句将被逐行检索。

[..但请阅读警告..]

另一种选择是使用基于游标的流来检索集合 每次的行数。这可以通过设置连接来完成 财产useCursorFetch为 true,然后调用setFetchSize(int) with int是每次要获取的所需行数:

conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
stmt = conn.createStatement();
stmt.setFetchSize(100);
rs = stmt.executeQuery("SELECT * FROM your_table_here");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取大数据集的 JDBC ResultSet 内部机制 的相关文章

  • 如何在不超时的情况下解析大型 CSV 文件?

    我正在尝试解析 50 MB 的 csv 文件 文件本身很好 但我正在尝试解决所涉及的大量超时问题 每个设置上传明智 我可以轻松上传并重新打开文件 但浏览器超时后 我收到 500 内部错误 我的猜测是我可以将文件保存到服务器上 打开它并保留我
  • Mysql - Mysql2::错误:字符串值不正确:

    所以我建造了一个刮刀并拉动一些物体 问题是有些是外语 它使 mysql 数据库有点崩溃 这是我得到的错误 知道我能用这个做什么吗 谢谢 Mysql2 错误 列的字符串值不正确 xC5 x8Dga 第 1 行的 描述 插入sammiches
  • Codeigniter 加入多个条件

    我正在使用 Codeigniter Active Records 课程 我想加入我的users与我的桌子clients表 这样我就可以显示用户的 真实 姓名 而不仅仅是他们的 ID 这是什么clients表看起来像 示例 列 a 1 a 2
  • 无法使用 Django 应用程序从容器连接到 MySQL docker 容器

    当我尝试从运行 Django 应用程序的 docker 容器连接到运行 MySQL 的容器时 出现以下错误 django db utils OperationalError 2003 Can t connect to MySQL serve
  • C#:SQL 查询生成器类

    在哪里可以找到好的 SQL 查询构建器类 我只需要一个简单的类来构建 SQL 字符串 仅此而已 我需要它用于 C 和 MySql 我真的不需要像 Linq 或 NHibernate 这样的东西 谢谢 由于 Google 将我引导至此页面 我
  • 将 UPDATE 转换为 INSERT INTO ON DUPLICATE KEY UPDATE 语句

    我有这个 UPDATE MySQL 语句 效果很好 UPDATE table1 Inner Join table2 ON table2 id table1 gw id SET table1 field1 1 table1 field2 2
  • Glassfish 4 - JDBC 领域

    Glassfish 4 中的密码加密算法和摘要算法有什么区别 因为Password加密算法不能为空 所以我使用了MD5 Encoding使用了Hex 摘要算法为空 因此默认为 SHA 256 但是 如果我使用 JAAS 制作一个简单的登录应
  • 比较表中的行以了解字段之间的差异

    我有一个包含 20 多列的表 客户端 其中大部分是历史数据 就像是 id clientID field1 field2 etc updateDate 如果我的数据如下所示 10 12 A A 2009 03 01 11 12 A B 200
  • Python:如何使用生成器来避免 sql 内存问题

    我有以下方法来访问 mysql 数据库 并且查询在服务器中执行 我无权更改有关增加内存的任何内容 我对生成器很陌生 并开始阅读更多有关它的内容 并认为我可以将其转换为使用生成器 def getUNames self globalUserQu
  • mysql-如何向列申请补助?

    用户名 撤销对数据库的选择 Person I set GRANT SELECT id ON database Person TO username localhost 不是工作 gt SELECT secret FROM Person Go
  • 将 SQL 数据中的一行映射到 Java 对象

    我有一个 Java 类 其实例字段 以及匹配的 setter 方法 与 SQL 数据库表的列名相匹配 我想优雅地从表中获取一行 到 ResultSet 中 并将其映射到此类的实例 例如 我有一个 Student 类 其中包含实例字段 FNA
  • Hibernate 对集合的查询过滤器

    我想执行以下查询 from Item i where i categoryItems catalogId catId 然而 这会产生以下异常 非法尝试取消引用集合 所以我用谷歌搜索 找到了这个 Hibernate 论坛帖子https for
  • 阻止注销页面后的后退按钮

    我有 php 注销页面 当用户单击注销链接时 请参阅此页面并重定向到索引页面 但是当单击后退按钮时 我会看到带有用户数据的上一页 当然 当我刷新页面时 我看不到以前的页面和数据 我在单击注销并单击后退按钮后检查了其他代码 drupal 但我
  • 第三个下拉菜单不从数据库填充

    我有以下 Index php
  • Mysql 检索所有有限制的行

    我想检索特定用户的所有行 限制为 0 x 所以我只是想问是否有任何方法可以检索 mysql 中的所有行 而不调用返回 x 的 count id 的方法 而不重载现有函数 该函数在查询中根本没有限制 与我们的 string Relace 功能
  • MySQL 使用 ALTER IGNORE TABLE 出现重复错误

    我的 MySQL 中有一个有重复项的表 我尝试删除重复项并保留一项 我没有主键 我可以通过以下方式找到重复项 select user id server id count as NumDuplicates from user server
  • 在 MySQL 中使用 COUNT 时如何返回 0 而不是 null

    我使用此查询返回存储在 sTable 中的歌曲列表以及存储在 sTable2 中的总项目数 SQL queries Get data to display sQuery SELECT SQL CALC FOUND ROWS str repl
  • Laravel leftJoin 仅右表的最后一条记录

    我是 Laravel 的新手 我有两张桌子 1 产品 2 价格 products id product int p key name varchar prices id price int p key id product int
  • MySQL 按重复项从上到下排序

    我有一个lammer问题 因为我不是mysql专业人士 我有类似的字段 id color 1 red 2 green 3 yellow 4 green 5 green 6 red 我想按重复项进行分组 最常见的重复项先进行分组 所以应该这样
  • Mysql 创建定义器

    我创建了一个在 CentOS Web 服务器上运行的 Intranet Web 应用程序 该应用程序使用另一个本地服务器 始终是 CentOS 作为 MySQL 数据库 在数据库内部我创建了例程 这些例程总是这样开始 CREATE DEFI

随机推荐

  • 将 C 字节数组转换为 long long

    我的应用程序中有一个 8 字节数组 其中包含以下数据 00000133339e36a2 该数据代表一个长整型 在写入数据的平台上 在 Mac 上这将是一个长整型 其值为 1319420966562 在实际应用中 这是一组半随机的数据 因此数
  • D3 弧形端部 V 形

    我画了一个arc https github com d3 d3 shape arcs使用 D3 js 默认情况下具有方形末端 var arc d3 arc innerRadius 0 outerRadius 100 startAngle 0
  • 文件包含路径分隔符。

    当我尝试检查特定文件是否存在时 我得到java lang illegalArgumentException File contains a path separator 使用 getFileStreamPath 执行此操作的正确方法是什么
  • Laravel 按字段长度排序

    我想构建一个按特定字段长度对数据进行排序的查询 我需要将此查询重写为 laravel 的 Eloquent ORM SELECT FROM table ORDER BY CHAR LENGTH field 看起来orderByRaw这就是您
  • 有人有使用 OpenCV 和 python 进行描述符提取的示例吗?

    我正在尝试使用 OpenCV 从图像中提取 SURF 描述符 我正在使用 OpenCV 2 4 和 Python 2 7 但很难找到任何提供有关如何使用这些函数的信息的文档 我已经能够使用以下代码来提取特征 但我找不到任何明智的方法来提取描
  • Struts 2下载-如何动态配置文件名?

    我正在开发一个应用程序 人们可以将所需的文件从数据库中提到的位置下载到本地 我正在使用 struts 2 从服务器下载文件 我可以毫无例外地下载该文件 并且运行完美 但是下载的文件具有我在 struts xml 中指定的文件名 我希望它是正
  • `ifstream::readsome` 何时设置 `eofbit`?

    这段代码永远循环 include
  • 如何将 API 参数传递给 GCP 云构建触发器

    我有一大组 GCP Cloud Build 触发器 通过云调度程序调用 所有触发器都运行良好 现在 我想通过外部 API 调用来调用这些触发器 并向它们传递参数值和数量不同的动态参数 我能够通过运行 API 请求来启动触发器 但我发送的 A
  • Spring 3.0 使用 Jackson 消息转换器进行 JSON 响应

    我将我的消息转换器配置为杰克逊的消息转换器 class Foo int x int y 并在控制器中 ResponseBody public Foo method return new Foo 3 4 由此 我期望从服务器返回一个 JSON
  • 如何通过CloudFormation设置EC2实例根卷的标签

    使用 CloudFormation 创建 EC2 实例 但根卷的名称 标签 为空 如何使用CloudFormation进行设置 ec2 instance yml CloudFormation template MyInstance Type
  • 连接到 Tomcat 上的套接字?

    我正在尝试从独立小程序连接到在 tomcat 上运行的 servlet Servlet public void init ServletConfig config throws ServletException super init con
  • Application Insights - 仅获取客户端数据,不获取服务器数据。

    我有一个托管在 Windows Server 2008 上的 ASP Net MVC 4 应用程序 我正在使用 Microsoft Application Insights 它非常适合客户端指标 例如客户端处理时间 自定义事件 用户 会话
  • tbb:concurrent_hash_map:英特尔线程构建模块 (TBB) 的示例代码

    寻找要使用的示例代码tbb concurrent hash map
  • 使用 C# 9 顶级语句时,如何在 Main 范围之外添加代码?

    我的理解是类似直接写代码到老的 static void Main string args 无需显示上面的内容 但是 我曾经在类 Program 中声明我的变量 以便从其他类访问它们 抱歉 如果不是最佳实践 我自己学习了 C 只要它有效 我对
  • 强制卸载 Visual Studio

    卸载 Microsoft Visual Studio Ultimate 2015 Preview 时 它会抛出错误并引用 Microsoft Visual Studio Ultimate 2015 Preview 已停止工作 留言内容包括
  • 如何在运行时更改相机的预览?

    我正在尝试创建一个应用程序 它可以从相机视图中捕获一些 x y 大小的矩形部分 为了实现这一目标 我已经使用了许多线程 但似乎没有一个线程能够按要求工作 基本上我想要实现的目标如下所示 我的要求是 当我打开相机时 屏幕上应该有一个矩形突出显
  • 访问最终类的 @NSManaged 属性时出现 Swift 链接器错误

    我在一个较大的项目中遇到了问题 并将其归结为这个简单的代码 出于演示目的 我创建了一个新的 Swift 项目 在 Model swift 文件中包含以下内容 import Foundation import CoreData class A
  • 完美处理动态实例化中的scala构造函数

    我已经整理了这个工作代码 可以从给定的动态实例化一个类name String 以下 这适用于简单的情况 类和具有一个构造函数的案例类 我不确定如何处理存在多个构造函数的一般情况 我认为它们只能通过它们的签名来区分 但发现伴生对象 类和案例类
  • 当测试的主机类型为“Moles”时,无法从配置文件访问信息

    当单元测试的主机类型为 Moles 时 我们在通过单元测试访问 net 配置文件 例如 app config 和 web config 中的信息时遇到问题 这引起了相当多的麻烦 所以我希望有人知道可以做什么 我们使用的是 Visual St
  • 获取大数据集的 JDBC ResultSet 内部机制

    JDBC 结果集是否在 SQL 查询的一次网络调用中获取所有数据 考虑查询select from table where timestamp gt 1597937895 现在该查询有超过 100 万行 结果集是否在一次网络调用中获取所有行