美文网首页
自研项目记录

自研项目记录

作者: 楼兰King | 来源:发表于2020-09-17 23:32 被阅读0次

    application配置中
    spring.datasource.druid.pool-prepared-statements=true
    druid的连接池配置中有PrepareStatementCache的配置,
    该信息解决了sql语句开源被预编译,并且保存在PrepareStatement这个对象中,而这个对象的存储就在PrepareStatementCache,
    对于Oracle可以绕过数据库编译,有很大的提升,但是对于mysql,没有那么明显。
    这个值的设置不是越大越好,PSCache会占用JVM,占用量=连接数PSCache设置的大小每个PSCache占用的内存
    图片描述:

    image.png
    启动错误:

    Caused by: java.lang.ClassNotFoundException: com.alibaba.druid.filter.logging.Log4j2Filter

    最开始遇到这个错误,百度,网上一堆的清一色解决方案,缺少log4j,引入log4j相关依赖,或者引入slf4j-over-log4j的依赖,但是好像都不行,最后还是谷歌靠谱,直接检索出github上的解决方案,这才解决了问题。

    查看github的解决方案:https://github.com/alibaba/druid/issues/2942
    如果网络比较慢,访问不了github也没有关系,看下面就好。

    你安装的应该是低版本的druid没有这个类,升级到新版;指定druid-spring-boot-starter但没指定druid也可能出现这个错误

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.10</version>
    </dependency>
    
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.1.10</version>
    </dependency>
    

    添加druid starter包的同时,也要添加druid的包即可解决报错。

    此外对于validation-query属性,不同的数据库值也不一样。

    DataBase validation-query
    hsqldb select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
    Oracle select 1 from dual
    DB2 select 1 from sysibm.sysdummy1
    MySql select 1
    Microsoft SqlServer select 1
    postgresql select version()
    ingres select 1
    derby select 1
    H2 select 1

    类似的坑我遇到过的还有在使用pageHelper时,只引入starter依赖项目启动就报错,查看官方的解释需要引入jsqlparser.Jar的依赖,遇到问题最好看出处的解释,要不然会踩很多坑。

    Druid 数据库连接池监控界面配置的参数解读
    image.png
    image.png

    相关文章

      网友评论

          本文标题:自研项目记录

          本文链接:https://www.haomeiwen.com/subject/pgvsyktx.html