当前位置: 首页 > 知识库问答 >
问题:

Oracle JDBC优化:在spring boot应用程序中启用PreparedStatement缓存

濮阳唯
2023-03-14

我有一个连接到Oracle数据库的spring boot REST应用程序。我们正在使用JDBCTemplate来使用JDBC。Oracle数据库属性通过以下3个应用程序获得。属性设置:

spring.datasource.url
spring.datasource.username
spring.datasource.password

应用程序正在使用Hikaricp。从HikariCP网站上,我了解到这个池不缓存PreparedStatement,因为JDBC驱动程序是最好的。

现在,我将在什么地方和什么地方具体说明以确保这些:

>

  • Oracle JDBC驱动程序(OJDBC7.jar)缓存PreparedStatements。是否有方法自定义它可以缓存的PreparedStatements的数量。

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

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

    根据上述规定,需要采取哪些步骤

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

    任何其他(Oracle)JDBC性能优化技巧都将受到欢迎。

  • 共有1个答案

    梁宪
    2023-03-14

    Hi函数Enable Prepared statement caching与spring和REST都没有关系。这个函数只是数据源、JDBC驱动程序和数据库之间的协商问题。为了了解如何设置它,请阅读有关驱动程序、数据源和数据库的相关文档。

    当涉及到Hikari时,这样做的coirrect方法是(注意datasource2,重命名为datasource以启用自动配置):

    spring:
      datasource2:
          dataSourceClassName: com.zaxxer.hikari.HikariDatasource
           .....
           ......
          configuration:
                maximumPoolSize: 25  
                data-source-properties:
                   ImplicitCachingEnabled: true
                   MaxStatements: 100
    

    配置中的属性将直接传递给底层驱动程序。

    @Bean
    @ConfigurationProperties("spring.datasource2")
    public DataSourceProperties dataSourceProperties2() {
        return new DataSourceProperties();
    }
    
    @Bean()
    @ConfigurationProperties("spring.datasource2.configuration")
    public DataSource hikariDatasource() {
    
    
        return dataSourceProperties2().initializeDataSourceBuilder().build();
    

    }

    此示例使用手动初始化基础数据源。

     类似资料:
    • 我想启用或禁用具有外部配置的SSL/TLS,这些配置可以在应用程序启动期间提供。应用程序应该支持http和HTTPS的所有crud操作。 既然上面的属性是不推荐使用的,那么我如何在不使用配置文件的情况下实现它。

    • 我试图在SpringMVC中运行SpringBoot应用程序,在SpringMVCPOM中添加SpringBoot应用程序依赖项,并扫描SpringBoot包,但我面临以下问题

    • 我想启用cassandra cqlsession度量。当尝试注册cqlsession度量时,它提供可选的。springboot应用程序中的empty()。这里我使用的是cassandra datastax java驱动程序4.6。 这是我的代码: 正在引发IllegalArgumentException错误。 当参考卡桑德拉税务局的官方文件时(https://docs.datastax.com/e

    • 我在stackoverflow上发现了类似的问题,并试图用这种方式(LINK)解决这个问题,但在我的项目中没有起作用。谁能给我一些建议吗? pom.xml 应用属性

    • 使用spring-boot时,一切工作都很好。尽管如此,在spring-boot中已删除了注释和。我试图将代码重构为新版本,但我做不到。对于以下测试,我的应用程序在测试之前没有启动,http://localhost:8080返回404: 如何重构测试以使其在Spring-Boot1.5中工作?

    • 请让我知道如何使用spring boot和ehcache实现这一点。