【发布时间】:2018-11-30 09:44:18
【问题描述】:
我尝试使用 JDBC 游标 (setFetchSize) 发出读取所有请求(从 tblName 中选择 *)。 postgresql.conf 中的 temp_file_limit 属性为 500 KB。当我执行准备好的语句时,我得到一个 psql 异常 -
org.postgresql.util.PSQLException: 错误: 临时文件大小超过 temp_file_limit (500kB)
PostgreSQL.conf 中的文档说“#limits per-session temp file space”。 https://jdbc.postgresql.org/documentation/head/query.html#query-with-cursor 根据此链接,连接必须禁用自动提交,而我没有禁用它。我也这样做了,但我最终遇到了同样的问题。我的理解是,如此大的读取操作在加载到结果集之前会写入临时文件。如果是这种情况,那么使用较低的 temp_file_limit,我将永远无法读取非常大的数据,即使使用游标也是如此。这对于为什么它首先是可配置的没有意义。
将 temp_file_limit 设置为 -1(无限文件大小)为我解决了这个问题。我采用这种方法是否正确?
【问题讨论】:
标签: postgresql jdbc database-cursor