使用Running schema验证器启动时Hibernate运行缓慢

时间:2016-12-07 19:26:29

标签: hibernate spring-boot

我一直在使用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

4 个答案:

答案 0 :(得分:3)

架构验证器很慢。我们最终将这一行添加到我们的" dev"的弹簧配置文件中。环境配置文件(application-dev.properties)

spring.jpa.hibernate.ddl-auto=none

这有点冒险,因为数据库和JPA实体之间的一致性未得到验证。但是,我们有测试和QA环境可以解决任何问题。

此修复确实将启动过程缩短了大约20秒。

答案 1 :(得分:0)

在这样的任何问题中,获取一个分析器(Yourkit非常好)并在启动时分析您的应用程序以查看花费时间的内容。 Yourkit不仅会向您展示热点(方法花费的时间不成比例),还会向您显示任何数据库查询以及它们花费的时间。

确保以完整跟踪模式开始分析(这可以在IDE中配置,例如在运行配置的启动选项卡上的IntelliJ中)。

答案 2 :(得分:0)

我在JPA(Eclipselink)和Mysql数据库方面遇到了同样的问题 当我启动应用程序时,花了1分钟创建4个空的简单表。

我看到的日志如下:

  

如果不存在则创建表...然后它表示错误表已经存在。

上述每个日志记录大约需要15秒。

然而,在搜索后,有人建议使用最新的Mysql连接器驱动程序(Jar文件),我这样做了,现在工作正常。

所以尝试使用不同的或更新的连接器jar文件,在你的情况下为postgresql它将是here

答案 3 :(得分:0)

检查您的application.yml。

  jpa:
database: MYSQL
show-sql: true
hibernate:
  ddl-auto : none

如果ddl-auto的值是update,请改为将其更改为none,那么它应该快得多。