问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

流式读取mysql是不是节省内存的一种方法

发布网友 发布时间:2022-08-16 04:15

我来回答

1个回答

热心网友 时间:2023-09-29 03:59

1 读取操作开始遇到的问题是当sql查询数据量比较大时候基本读不出来。开始以为是server端处理太慢。但是在控制台是可以立即返回数据的。于是在应用
这边抓包,发现也是发送sql后立即有数据返回。但是执行ResultSet的next方法确实阻塞的。查文档翻代码原来mysql驱动默认的行为是需要把整个结果全部读取到
内存中才开始允许应用读取结果。显然与期望的行为不一致,期望的行为是流的方式读取,当结果从myql服务端返回后立即还是读取处理。这样应用就不需要大量内存
来存储这个结果集。正确的流式读取方式代码示例:

PreparedStatement ps = connection.prepareStatement("select .. from ..",
ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);

//forward only read only也是mysql 驱动的默认值,所以不指定也是可以的 比如: PreparedStatement ps = connection.prepareStatement("select .. from ..");

ps.setFetchSize(Integer.MIN_VALUE); //也可以修改jdbc url通过defaultFetchSize参数来设置,这样默认所以的返回结果都是通过流方式读取.
ResultSet rs = ps.executeQuery();

while (rs.next()) {
  System.out.println(rs.getString("fieldName"));
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
折儿是什么意思? 什么叫饭折? 饭折是什么意思 私募股权基金6种模式 私募投资业务管理系统 火山仙泉天然矿泉水产品特点 用苏打片带吃带洗真的能生男孩吗 凡山天然苏打水怎么样 美的面包机和面要多久 美的面包机和面的时间要多长 美的面包机怎么用手动操作 手机上方出现菜单两个字怎么取消? 0pp0A9手机右上角出现菜单二字怎么取消? 手机出现双字 如何解决双网卡占用资源冲突 为什么双网卡冲突?如何解决? 我的电脑俩网卡冲突怎么办? 多网卡冲突无法上网 新百伦327那个鞋面不小心弄脏了用酒精湿巾擦应该不要紧吧?不会损坏鞋面吧?_百度问一问 梦幻西游曾用名怎么消失? 亚麻籽的作用与功效有那些 伤大拇指怎么理赔 工伤大拇指赔偿 小微企业是哪种性质的经济,当前我国发展小微企业的客观依据是 华为畅享5手机,电信版,双卡双待的手机为什么移动卡显示的是2G 企业代码是统一社会信用代码吗 数学题!!!急,,只要第三问 求解释F那边的角度是怎么出来的 图中,杠杆OBA在图示位置静止,请画出作用在A点的最小力F及其力臂L. 按要求作图:如图所示杠杆OBA处于平衡状态,请分别画出F 1 的力臂l 1 和F 2 的力臂l 2 (1)如图所示杠杆OBA处于平衡状态,请分别画出F 1 的力臂L 1 和F 2 的力臂L 2 . (2)要求用一个最小的 笔记本怎么连接无线路由器 win7 好像佳轩是什么意思? 佳轩这个名字好听吗 西安佳轩餐饮管理有限公司怎么样? 杭州佳轩网络科技有限公司怎么样? 上海佳轩人力资源有限公司怎么样? 接的头发如何盘 电话号码如何分类 电话号码多能否分成常用号码与一般号码(在手机上)? 抖音怎么把原声录进去 为什么人的两只脚能够平衡站着呢?请知道的朋友帮我解释一下,谢谢! 新郑跑美团众包怎么样? 凉皮凉面要煮吗 求瓦香鸡的做法! 谁能告诉昆山仁宝的PE-ME(职工机构工程师)具体工作是干什么? 仁宝PE-ME工程师 身份证丢了,用户口本可以过海吗,在线急求 遗失身份证如何在徐闻港登船 请问要坐船去大连身份证丢了用户口本可以么 身份证丢了,人在外地回家要坐车坐船,没有身份证怎么办