当前位置: 首页 > article >正文

关于mysql jdbc驱动fetchSize属性的说明

【README】

1)fetchSize作用: 当数据库有大量数据满足查询条件时,如有100w,这些如果一次性加载到jvm(java查询客户端),可能存在jvm因堆内存不足导致oom; 为了解决这个问题,我们在查询时可以设置fetchsize属性,即提示jdbc驱动程序每次网络请求从数据库返回的数据行数;若结果集很大超过fetchsize大小,则jdbc驱动程序需要向数据库服务器发起多次网络请求;

2)本文参考:MySQL :: MySQL Connector/J Developer Guide :: 6.4 JDBC API Implementation Notesicon-default.png?t=O83Ahttps://dev.mysql.com/doc/connector-j/en/connector-j-reference-implementation-notes.html


有2种方法设置fetchsize;

1)方法1: 设置fetchsize为 Integer.MIN_VALUE

表示同一个查询连接上,jvm向db发送的每次网络请求仅返回一行数据; 即逐行传输结果集; 如果满足条件的数据量是1000条,则需要1000次网络连接;

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

2)方法2:连接串设置useCursorFetch=true,且stmt设置fetchsize为整数n

则同一个查询连接上每次网络请求返回n行数据;(下述代码设置fetchsize为100); 如果满足条件的数据量是1000条,则需要10次网络连接;

conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");

stmt = conn.createStatement();

stmt.setFetchSize(100);
rs = stmt.executeQuery("SELECT * FROM your_table_here");


http://www.kler.cn/news/362055.html

相关文章:

  • Android OpenGL天空盒
  • 【C++】使用vscode进行 C/C++ 开发,内含c_cpp_properties.json、launch.json 和 tasks.json解释
  • 【图像分类 yolov11】使用YOLOv11进行图像分类任务:训练与预测
  • 秃姐学AI系列之:语义分割 + 数据集 | 转置卷积 + 代码
  • 多功能纤维上线,大脑肠道 “无线畅聊” 不是梦
  • 浏览器控制的无线开关
  • 华山论剑之Rust的Trait
  • 【Linux】一个简单while循环实现【严格轮转】,从而理解什么是【多线程的忙等待】
  • 挑战性课程《信号处理系统》(原信号与系统+数字信号处理)课程课程设计
  • Mamba学习笔记(4)——Mamba核心
  • 代码工艺:写代码的好习惯
  • 使用python自制桌面宠物,好玩!——枫原万叶桌宠,可以直接打包成exe去跟朋友炫耀。。。
  • 【LeetCode】123.买卖股票的最佳时间
  • 使用 NLP 和模式匹配检测、评估和编辑日志中的个人身份信息 - 第 1 部分
  • VBA技术资料MF212:确定Excel文件是否正在使用中
  • SSM与Springboot是什么关系? -----区别与联系
  • Psychophysiology:脑-心交互如何影响个体的情绪体验?
  • java的继承
  • git提交信息写错处理方式
  • Lua脚本的原子性
  • element plus e-table表格中使用多选,当翻页时已选中的数据丢失
  • dd小程序如何监听props中对象的值
  • PHP中‘BITWISE AND‘运算符和‘LOGICAL AND‘运算符的区别
  • 集成Twilio发送短信
  • 【AIGC半月报】AIGC大模型启元:2024.10(下)
  • React面试题目(从基本到高级)