mysql8之单次查询结果太大
MyBatis-Plus 大结果集查询导致 OOM 彻底解决方案(生产实战版,100% 解决百万数据查询 OOM)一、问题本质你遇到的是:MyBatis/MyBatis-Plus 默认会把整个结果集一次性加载到 JVM 内存中→ 结果集 10w、50w、100w 条 → 内存直接撑爆 → OOM二、核心解决方案:流式查询 + 游标 fetchSize不一次性加载全部数据,而是数据库边发,应用边读,读一条处理一条内存只占用一条数据的大小,多大结果集都不会 OOM。MyBatis / MyBatis-Plus 原生支持,不需要改 SQL,不需要分页。三、3 种生产可用方案(从简单到最强)方案 1:MyBatis-Plus 流式查询(最简单,推荐)步骤 1:Mapper 接口(用 MP 自带)@MapperpublicinterfaceUserMapperextendsBaseMapperUser{// 流式查询:必须用 ResultHandler 接收voidselectAllLargeData(@Param("query")QueryWrapperUserqueryWrapper,ResultHandlerUserhandler);}步骤 2:Mapper XMLselectid="selectAllLargeData"resultType="com.xxx.User"fetchSize="1000"select * from userwhere${query.sqlSegment}/where