Hibernate在启动时速度很慢,运行架构验证器



我一直在使用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,那么它应该更快。

最新更新