自研项目记录

2020-09-17  本文已影响0人  楼兰King

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
上一篇下一篇

猜你喜欢

热点阅读