我一直在使用JPA和Postgres数据库运行Spring-boot。根据我的网络环境,起始阶段的阻塞超过15秒:
INFO o.h.tool.hbm2ddl.SchemaValidator - HHH000229: Running schema validator
奇怪的是我的数据库是本地的。有什么想法吗?
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false
spring.jpa.hibernate.ddl-auto= validate
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/cine
模式验证器只是慢。我们最终将此行添加到我们的" dev"环境配置文件(application-dev.properties)
的春季配置文件中spring.jpa.hibernate.ddl-auto=none
这有点冒险,因为未验证数据库和JPA实体之间的一致性。但是,我们有测试和质量检查环境,可以解决任何问题。
此修复程序确实将我的启动过程减少了约20秒。
在此类问题中,请掌握Profiler(YourKit非常出色),并在启动时将您的应用程序配置为您的应用程序,以查看花费时间。YourKit不仅会向您展示热点(方法不成比例的时间过长),而且还会向您显示任何数据库查询以及它们花了多长时间。
确保您以完整的跟踪模式开始分析(可以在IDE中进行配置,例如在Intellij中的运行配置启动选项卡上的Intellij)。
我与JPA(eClipSelink)和MySQL数据库遇到了同样的问题当我启动应用程序时,创建4个空的简单桌子花了大约1分钟。
我看到的日志如下:
创建表(如果不存在),则说明错误表已经存在。
上面的每个日志记录大约需要15秒。
但是,在搜索后,有人建议使用最新的mysql连接器驱动程序(JAR文件),我这样做了,现在可以正常工作。
因此,尝试使用不同或较新的连接器jar文件,在您的情况下,它将在这里
检查您的应用程序。
jpa:
database: MYSQL
show-sql: true
hibernate:
ddl-auto : none
如果DDL-AUTO的值是更新,请改为不将其更改为NOT,那么它应该更快。