【问题标题】:r2dbc-oracle back pressure implementation vs. fetchsizer2dbc-oracle 背压实现与 fetchsize
【发布时间】:2021-06-22 21:02:14
【问题描述】:

r2dbc-oracle 似乎没有适当的背压实现。如果我选择更大数量的行(比如 10k),那么它比常规的 jdbc/JPA 查询要慢得多。如果我手动将 fetchsize 设置为 1000,那么查询速度大约快 8 倍(!)。

所以

  • 您能否确认已实施/未实施背压?如果没有:这是计划好的吗?
  • 有没有更简单的方法来设置 fetchsize(甚至可能是全局...)然后使用手动 databaseclient.sql()-queries ?

【问题讨论】:

    标签: oracle r2dbc


    【解决方案1】:

    感谢分享这些发现。

    我可以确认来自订阅者的请求信号不会影响 Oracle R2DBC 的行发布者的获取大小。目前,唯一支持的配置提取大小的方法是调用 io.r2dbc.spi.Statement.fetchSize(int)。

    此行为可归因于 Oracle JDBC 的 oracle.jdbc.OracleResultSet.publisherOracle(Function) 实现。 Oracle R2DBC 驱动程序正在使用 Oracle JDBC 的 Publisher 从数据库中获取行。

    我还可以确认,Oracle JDBC 团队已经意识到这个问题,并且正在努力修复。当订阅者的需求超过 Statement.fetchSize(int) 配置的值时,该修复将让发布者使用更大的提取大小。

    来源:我为 Oracle R2DBC 和 Oracle JDBC 的行发布者编写了代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-22
      • 2019-12-08
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 2020-03-07
      • 2021-06-09
      • 2018-06-19
      相关资源
      最近更新 更多