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

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

文章目录

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

场景

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

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

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

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

做法通常如下:

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

http://www.lryc.cn/news/39668.html

相关文章:

  • 【数据降维-第2篇】核主成分分析(KPCA)快速理解,及MATLAB实现
  • Python+ChatGPT实战之进行游戏运营数据分析
  • Java每日一练(20230313)
  • 国内ChatGPT日趋成熟后,可以优先解决的几个日常小问题
  • 业内人士真心话,软件测试是没有前途的,我慌了......
  • 哈佛与冯诺依曼结构
  • 传输安全HTTPS
  • Docker--(六)--Docker资源限制
  • 消息队列总结及案例
  • 通过WiFi连接adb调试
  • 【蓝桥杯-筑基篇】常用API 运用(1)
  • 想要成为高级网络工程师,只需要具备这几点
  • c++ 每日十问3-处理数据
  • 【MySQL】实验一 数据定义
  • 17.电话号码的字母组合(深度递归遍历解决经典老题)
  • Python 基础教程【1】:Python介绍、变量和数据类型、输入输出、运算符
  • 【RPC】Apache Thrift系列详解 - 概述与入门
  • class03:MVVM模型与响应式原理
  • [Spring学习]08 @Resource和@Autowired注解的区别
  • 前端开发神器VS Code安装教程
  • 【Hive进阶】-- Hive SQL、Spark SQL和 Hive on Spark SQL
  • 搭建自己的直播流媒体服务器SRS,以及SRS+OBS直播推拉流使用及配置
  • Node.js-----使用express写接口
  • 【Linux修炼】16.共享内存
  • JAVA进阶 —— Stream流
  • Linux基础命令大全(上)
  • 嵌入式 串口通信
  • C语言函数调用栈
  • 【高阶数据结构】红黑树
  • 网络协议分析期末复习(二)