我有包含1600万条记录的MySql表,由于某些迁移工作,我正在读取整个Mysql表。
以下代码用于在MySql中流式传输大型ResultSet
statement = connection.createStatement(
java.sql.ResultSet.TYPE_FORWARD_ONLY,
java.sql.ResultSet.CONCUR_READ_ONLY);
statement.setFetchSize(Integer.MIN_VALUE);
但这一次一次流式传输一个结果,这是否意味着我们在每一行都命中了MySql服务器
在使用流式传输时,我们可以设置以下语句吗?setFetchSize(1000);
我想减少流式传输大型ResultSet时往返服务器的次数
我将假定您使用的是MySQL提供的官方JDBC驱动程序Connector / J。
您显式地告诉JDBC(和MySQL)以逐行方式传输结果 statement.setFetchSize(Integer.MIN_VALUE);
从MYSQL文档:
默认情况下,完全检索ResultSet并将其存储在内存中。在大多数情况下,这是最有效的操作方式,而且由于MySQL网络协议的设计更易于实现。如果您正在使用具有大量行或较大值的ResultSet,并且无法在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的组合用作驱动程序发出信号以逐行流式传输结果集的信号。此后,将使用该语句创建的任何结果集逐行检索。
Integer.MIN_VALUE
MySQL将忽略除获取大小以外的任何值,并应用标准行为。整个结果集将由JDBC驱动程序获取。
要么不使用setFetchSize()
,否则JDBC驱动程序将使用默认值(0
),或将其值0
显式设置。使用值0
还将确保JDBC不使用MySQL游标,这可能取决于您的MySQL和Connector
/ J版本和配置而发生。
我有一个包含1600万条记录的MySql表,由于一些迁移工作,我正在读取整个MySql表。 以下代码用于在MySql中流式传输大型结果集 但这是一次流式传输一个结果,这是否意味着我们每行都命中MySql服务器 在使用流时,我们可以设置如下语句:setFetchSize(1000); 我想减少到服务器的往返次数,同时流式传输大型 ResultSet
问题内容: 使用MVC模型,我想编写一个JsonResult,它将Json字符串流式传输到客户端,而不是一次将所有数据转换成Json字符串,然后将其流回客户端。我有一些动作需要在Json传输时发送非常大的记录(超过300,000条记录),我认为基本的JsonResult实现是不可伸缩的。 我正在使用Json.net,我想知道是否有一种方法可以在转换Json字符串时流化它的块。 但是我不确定如何将这
问题内容: 我正在开发一个使用大型MySQL表的spring应用程序。加载大表时,我得到一个,因为驱动程序试图将整个表加载到应用程序内存中。 我尝试使用 但是然后我打开的每个ResultSet都挂了; 在网上查看时,我发现发生这种情况是因为它尝试在关闭ResultSet之前尝试加载所有未读的行,但事实并非如此,因为我这样做是: 小表(3行)也会发生挂起,如果我不关闭RecordSet(在一种方法中
我使用的是spring data mongodb,我想使用光标进行聚合操作。 MongoTemplate.stream()得到一个查询,所以我尝试创建聚合实例,使用ggregation.toDbObject()将其转换为DbObject,使用DbObject创建BasicQuery,然后调用stream()方法。 这返回一个空光标。 调试spring数据mongodb代码显示MongoTempla
根据我的阅读,我认为使用MySQL JDBC驱动程序在MySQL中流式传输< code>ResultSet的方法是这两个命令: 我的问题是,专家能否澄清使用上述代码流式传输ResultSet是否会将一行返回给客户端,然后去服务器获取下一行,依此类推(效率非常低),或者它是否足够智能,可以像一样进行缓冲流式传输?如果它进行缓冲流式传输,如何设置缓冲区大小? 编辑:来自文档: 前向只读结果集与整数获取
由于我刚接触DataFlow/Beam,概念还不太清楚(或者至少我在开始编写代码时有困难),我有很多问题: 什么是最好的模板或模式,我可以用来做到这一点?我应该先执行BigQuery的PTransform(然后执行PubSub的PTransform)还是先执行PubSub的PTransform? 我怎么做加入?比如? PubSub的最佳窗口设置是什么?BigQuery的PTransform部分的窗