----------------------------------------------
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));
}