如何解决r2dbc-oracle 背压实现 vs. fetchsize
r2dbc-oracle 似乎没有适当的背压实现。如果我选择更大的行数(比如 10k),那么它比常规的 jdbc/JPA 查询慢得多。如果我手动将 fetchsize 设置为 1000,那么查询速度大约快 8 倍(!)。
所以
- 您能否确认背压是否已实施?如果不是:这是计划好的吗?
- 有没有更简单的方法来设置 fetchsize(甚至可能是全局的...)然后使用手动 databaseclient.sql()-queries ?
解决方法
感谢分享这些发现。
我可以确认来自订阅者的请求信号不会影响 Oracle R2DBC 的行发布者的提取大小。目前,唯一支持的配置获取大小的方法是调用 io.r2dbc.spi.Statement.fetchSize(int)。
此行为可归因于 Oracle JDBC 对 oracle.jdbc.OracleResultSet.publisherOracle(Function) 的实现。 Oracle R2DBC 驱动程序使用 Oracle JDBC 的发布器从数据库中获取行。
我还可以确认 Oracle JDBC 团队已经意识到这个问题,并且正在着手修复。当订阅者的需求超过 Statement.fetchSize(int) 配置的值时,此修复将让发布者使用更大的提取大小。
来源:我为 Oracle R2DBC 和 Oracle JDBC 的行发布者编写了代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。