【发布时间】:2021-10-18 18:52:33
【问题描述】:
对于使用 Oracle OLTP 数据库作为数据源的现代后端 Java 应用程序,我应该使用哪一个?
对我来说,HikariCP 看起来像是现代 Java 应用程序事实上的标准池。但现在我需要维护一些过去的项目,该项目目前停留在 Oracle 驱动程序 v11 并使用 UCP。我现在想知道:Oracle 的UCP 比HikariCP 有什么优势吗?你会使用 UCP 还是 HikariCP?
在start.spring.io 生成的新 Spring Boot 项目将默认使用 HikariCP(尽管从 2.4 开始支持 UPC),直到您在 application.properties 中明确强制执行 UCP:
spring.datasource.type=oracle.ucp.jdbc.PoolDataSource
1. We prefer HikariCP for its performance and concurrency. If HikariCP is available, we always choose it.
...
4. If none of HikariCP, Tomcat, and DBCP2 are available and if Oracle UCP is available, we use it.
Oracle 网站包含有关如何在 Spring Boot 中使用 UCP 的教程(1、2),但没有解释这种设置的任何优点。我发现 old StackOverflow answer 提到了一些“非阻塞架构”,但我仍然不确定 UCP 是否比 HikariCP 更有价值或更可靠。
【问题讨论】:
-
最大的区别可能是当您进入 HA 空间时。 UCP 为 RAC/故障转移/事务完整性等提供了各种好东西。docs.oracle.com/en/database/oracle/oracle-database/21/jjucp/…。因此,如果这对您很重要,那么值得考虑这个角度。 (完全披露:我为 Oracle 工作)