openGauss应用开发指南:基于JDBC开发——示例2:客户端内存占用过多解决
示例2客户端内存占用过多解决
此示例主要使用setFetchSize来调整客户端内存使用,它的原理是通过数据库游标来分批获取服务器端数据,但它会加大网络交互,可能会损失部分性能。
由于游标事务内有效,故需要先关闭自动提交,最后需要执行手动提交。
// 关闭掉自动提交
conn.setAutoCommit(false);
Statement st = conn.createStatement();
// 打开游标,每次获取50行数据
st.setFetchSize(50);
ResultSet rs = st.executeQuery("SELECT * FROM mytable");
while (rs.next())
{
System.out.print("a row was returned.");
}
conn.commit();
rs.close();
// 关闭服务器游标。
st.setFetchSize(0);
rs = st.executeQuery("SELECT * FROM mytable");
while (rs.next())
{
System.out.print("many rows were returned.");
}
conn.commit();
rs.close();
// Close the statement.
st.close();
conn.close();
执行完毕后可使用如下命令恢复自动提交:
conn.setAutoCommit(true);

浙公网安备 33010602011771号