----------------------------------------------
jvm |
|
app |
select * from -------> mysql客户端 | <------------- mysql服务器
user buffer |
|
------------------------------------------------
mysql架构中,结果集会缓存到mysql客户端缓存buf,直到mysql server返回所有结果
当结果集超大时,mysql buffer会OOM内存溢出,客户端在jvm中
所以使用fetchsize异步流式查询,将结果分步返回
stmt=con.preparedstatement(sql,resultset.TYPE_FORWARD_NOLY,resultset.CONCUR_READ_ONLY)
stmt.setFechSize(Integer.MIN_VALUE) //Integer.MIN_VALUE是作为一个标识,表示逐行读取返回
stmt.executeQuery()
while(rs.next()){
syste,.out.println(rs.getstring(name));
}