Oracle JDBC优化:在Spring Boot应用程序中启用PreparedStatement缓存

anj*_*anb 9 java oracle jdbc prepared-statement spring-boot

我有一个连接到Oracle数据库的Spring Boot REST应用程序。我们正在通过JdbcTemplate使用JDBC。Oracle数据库属性是通过以下3个application.properties设置获得的:

spring.datasource.url
spring.datasource.username
spring.datasource.password
Run Code Online (Sandbox Code Playgroud)

该应用程序正在使用HikariCP。从HikariCP网站,我知道该池不缓存PreparedStatements,因为JDBC驱动程序是最好的设置。

现在,我将在哪里指定什么来确保这些:

  1. Oracle JDBC驱动程序(ojdbc7.jar)缓存PreparedStatements。有没有一种方法可以自定义它可以缓存的PreparedStatements的数量。

  2. https://howtodoinjava.com/java/jdbc/best-practices-to-improve-jdbc-performance/中,我们看到

    确保将数据库设置为最大数据包大小,并且驱动程序与该数据包大小匹配。为了获取更大的结果集,这减少了驱动程序和服务器之间发送/接收的总数据包数量。

为此,需要采取哪些步骤?

  1. 查找Oracle DB Server数据包大小
  2. 查找是否将Oracle DB Server设置为最大数据包大小
  3. 查找设置Oracle JDBC驱动程序的(ojdbc8.jar)数据包大小。

任何其他(Oracle)JDBC性能优化技巧将不胜感激。

Nir*_*ala 0

  • 通过以下方式启用语句缓存

oracleDataSource.setImplicitCachingEnabled(true)

  • 选择正确的缓存大小以充分利用内存

connection.setStatementCacheSize(10) 尽量接近最常用的语句数量 默认语句缓存大小为 10

  • 如果无法更改应用程序以使用语句缓存,则进行回退

session_cached_cursors = 50 Connection.setStatementCacheSize(10)