云数据库 GaussDB-示例:常用操作:示例2客户端内存占用过多解决

时间:2023-11-01 16:18:26

示例2客户端内存占用过多解决

此示例主要使用setFetchSize来调整客户端内存使用,它的原理是通过数据库游标来分批获取服务器端数据,但它会加大网络交互,可能会损失部分性能。

由于游标事务内有效,故需要先关闭自动提交,最后需要执行手动提交。

 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627
// 关闭掉自动提交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);
support.huaweicloud.com/centralized-devg-v3-opengauss/gaussdb-12-0075.html