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

如何从 MySQL 读取 100w 数据进行处理

文章目录

  • 场景
  • 常规查询
  • 流式查询
    • MyBatis 流式查询接口
    • 非流式查询和流式查询区别
  • 游标查询

场景

大数据量操作的场景大致如下:

1、 数据迁移;
2、 数据导出;
3、 批量处理数据;

在实际工作中当指定查询数据过大时,我们一般使用分页查询的方式一页一页的将数据放到内存处理。但有些情况不需要分页的方式查询数据或分很大一页查询数据时,如果一下子将数据全部加载出来到内存中,很可能会发生OOM(内存溢出);而且查询会很慢,因为框架耗费大量的时间和内存去把数据库查询的结果封装成我们想要的对象(实体类)。

举例:在业务系统需要从 MySQL 数据库里读取 100w 数据行进行处理,应该怎么做?

做法通常如下:

1、 常规查询:一次性读取100w数据到JVM内存中,或者分页读取;
2、 流式查询:建立长连接,利用服务端游标,每次读取一条加载到JVM内存(多次获取,一次一行);
3、 游标查询:和流式一样,通过fetchSize参数,控制一次读取多少条数据(多次获取,一次多行&#x


http://www.kler.cn/a/535.html

相关文章:

  • 鸿蒙HarmonyOS开发:拨打电话、短信服务、网络搜索、蜂窝数据、SIM卡管理、observer订阅管理
  • 【JVM】总结篇-字节码篇
  • 深入理解连接池:从数据库到HTTP的优化之道
  • 2、pycharm常用快捷命令和配置【持续更新中】
  • 物理知识1——电流
  • CertiK《Hack3d:2024年度安全报告》(附报告全文链接)
  • 虹科干货|Redis企业版数据库为企业「数据安全」叠加最强Buff!
  • 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题——中间人攻击渗透测试解析(详细)
  • 二分查找创新性总结
  • Centos 安装mysql8(YUM方式)
  • JS高级知识总结
  • ChatGPT解开了我一直以来对自动化测试的疑惑
  • jQuery《一篇搞定》
  • MongoDB数据库从入门到精通系列之八:调整oplog大小
  • WiFi6模块如何应用在智能家居
  • MySQL 函数介绍
  • 【JavaScript速成之路】JavaScript内置对象--数组对象
  • 力扣-按日期分组销售产品
  • 字符编码(ASCII码、音码、形码、区位码,国标码、机内码,字形码)
  • MySQL对表操作
  • 数据结构与算法这么难,为什么我们还要学习?
  • 快排函数 -- qsort函数(Quick Sort)
  • docker 形态构建redis 哨兵模式集群
  • 网络安全缓冲区溢出与僵尸网络答题分析
  • 【华为OD机试真题2023 JAVA】寻找核酸检测点
  • 这个Java框架面试题,竟然难倒了工作4年的程序员!