【问题标题】:Are jooq streams async?jooq 流是异步的吗?
【发布时间】:2016-12-20 18:54:20
【问题描述】:

我是 jOOQ 的新手,正在考虑用 jOOQ 替换一些 JDBC 代码。

查看 jOOQ Java 8 流是我开始想知道是否可以通过使用 jOOQ 来提高性能。

我有一个具有以下特征的 PostgreSQL 查询: Merge Join (cost=1.34..7649.90 rows=30407 width=333) (实际时间=0.042..46.644 rows=28264 loops=1)

在数据库服务器上,第一行在 0.042 毫秒后返回,最后一行在 46.644 毫秒后返回。

但我的 JDBC 在完成之前不会返回 ResultSet。

jOOQ(带有 Java 8 流)是否能够在元组准备就绪后立即开始处理元组,或者 jOOQ 是否受 JDBC 限制?

【问题讨论】:

    标签: postgresql jdbc jooq


    【解决方案1】:

    jOOQ 的 Java 8 集成有两种您可能会感兴趣的方法:

    从 jOOQ 3.8 开始,这两个 API 都受到底层 JDBC API 的阻塞性质的限制,即两个 API 在内部迭代 ResultSet.next()

    特别是,您可以通过设置打开使用服务器端光标:

    // JDBC
    statement.setFetchSize(50);
    
    // jOOQ, which delegates this call to JDBC
    quest.fetchSize(50);
    

    有关详细信息,另请参阅 Statement.setFetchSize()this question

    【讨论】:

    • 有没有fetchAsync的类型化方法,比如fetchInto(class)?
    • 不,目前没有。但是你仍然可以在异步检索的结果上调用Result.into(Class)...
    猜你喜欢
    • 1970-01-01
    • 2013-09-09
    • 2018-10-29
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    相关资源
    最近更新 更多