Ale*_*lex 5 postgresql jdbc jooq
我正在使用 jOOQ 3.4.2 使用 Scala 查询 PostgreSQL 数据库。我想一次获取一小块结果集,而不将整个结果集加载到内存中,因为查询可能返回许多行。我有以下代码:
val query = context.selectFrom(table)
.where(conditions)
.orderBy(orderField)
.fetchSize(1)
val cursor = query.fetchLazy()
// Iterate through cursor using cursor.fetchOne()
Run Code Online (Sandbox Code Playgroud)
看起来 jOOQ 会在我调用时将整个结果集(或至少是结果集的一大块)加载到内存中fetchLazy(),甚至在我从游标中获取第一行之前(根据recvfrom()我看到的大量系统调用来判断)whilefetchLazy()正在被调用)。难道我做错了什么?
难道我做错了什么?
不是来自 jOOQ 方面。这正是确保 jOOQ(通过ResultQuery.fetchLazy()和Cursor.fetchOne())和 JDBC 驱动程序(通过ResultQuery.fetchSize(),转换为PreparedStatement.setFetchSize())一次准确获取一行的方法。
然而,您可能遇到过这个 PostgreSQL JDBC 驱动程序警告,即为了fetchSize工作,您必须在显式事务中运行查询。
| 归档时间: |
|
| 查看次数: |
1842 次 |
| 最近记录: |