面试:如何通过 MyBatis 查询千万数据并保证内存不溢出?

在这里插入图片描述

由于现在 ORM 框架的成熟运用,很多小伙伴对于 JDBC 的概念有些薄弱,ORM 框架底层其实是通过 JDBC 操作的 DB

JDBC(JavaDataBase Connectivity)是 Java 数据库连接, 说的直白点就是使用 Java 语言操作数据库

由 SUN 公司提供出一套访问数据库的规范 API, 并提供相对应的连接数据库协议标准, 然后 各厂商根据规范提供一套访问自家数据库的 API 接口

文章大数据量操作核心围绕 JDBC 展开,目录结构如下:

    MySQL JDBC 大数据量操作
        常规查询
        流式查询
        游标查询
        JDBC RowData
        JDBC 通信原理
    流式游标内存分析
        单次调用内存使用
        并发调用内存使用
    MyBatis 如何使用流式查询
    结言

MySql JDBC 大数据量操作

整篇文章以大数据量操作为议题,通过开发过程中的需求引出相关知识点

迁移数据
导出数据
批量处理数据

一般而言笔者认为在 Java Web 程序里,能够被称为大数据量的,几十万到千万不等,再高的话 Java(WEB 应用)处理就不怎么合适了

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

常规查询,一次性读取 500w 数据到 JVM 内存中,或者分页读取
流式查询,建立长连接,利用服务端游标,每次读取一条加载到 JVM 内存
游标查询,和流式一样,通过 fetchSize 参数,控制一次读取多少条数据


文章首发自公众号:源码兴趣圈,专注分享高并发、分布式、框架底层源码等知识

常规查询

默认情况下,完整的检索结果集会将其存储在内存中。在大多数情况下,这是最有效的操作方式,并且由于 MySQL 网络协议的设计,因此更易于实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值