gpt4 book ai didi

java - JDBC - 结果集缓存管理

转载 作者:行者123 更新时间:2023-12-02 02:25:53 26 4
gpt4 key购买 nike

我正在使用此代码从数据库加载数据:

PreparedStatement inputStmt = connection.prepareStatement("select * from A");  
inputStmt.setFetchSize(3000);
inputStmt.executeQuery();

由于我使用 setFetchSize,我知道该请求一次只会获取 3000 行,如果需要,它将获取接下来的 3000 行...

我的问题是:当我们获取第二个 3000 行时,前 3000 行是否仍保留在缓存中?

因为我正在读取一个包含数百万行的表,如果我不能很好地管理我的 callc,我将会遇到内存问题。

最佳答案

默认的 ResultSet 类型是 ResultSet.TYPE_FORWARD_ONLY,这意味着您一次只能前进一行。除非驱动程序实现得非常糟糕,否则它不会再在内存中保留任何无法访问的行。

驱动程序之间的默认获取大小有所不同。有些默认加载完整的结果集(例如 Postgres),另一些则具有较小的获取大小(例如 Oracle),这甚至对于某些类型的任务来说是无效的。

关于java - JDBC - 结果集缓存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47775197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com