2016-12-07 14 views
4

我一直在使用JPA和Postgres數據庫運行Spring-Boot。 根據我的網絡環境開始階段阻止超過15秒的:Hibernate在啓動時運行模式驗證器的速度很慢

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 
+2

您是否嘗試過讓一些記錄,看看正在執行的查詢? – Tobb

+2

或者至少在「運行模式驗證器」之後的日誌消息的時間戳? – Tobb

+0

您是否可以公開您的庫版本(spring,hibernate)和Hibernate配置(hibernate.cfg.xml)以及Spring上下文(applicationContext.xml)的有用部分 –

回答

0

在像探查這弄個什麼問題(Yourkit是優秀),並在啓動時配置您的應用程序,看看有什麼抽空。 Yourkit不僅會向您顯示熱點(方法花費時間過長),還會向您顯示任何數據庫查詢以及他們花費的時間。

確保您以完全跟蹤模式啓動分析(可以在IDE中配置,例如在運行配置啓動選項卡上的IntelliJ中)。

1

模式驗證器速度很慢。我們結束了加入這行來我們的Spring配置文件爲我們的「開發」環境配置文件(application-dev.properties)

spring.jpa.hibernate.ddl-auto=none 

這是一個有點冒險,因爲數據庫和JPA實體之間的一致性未覈實。但是,我們有測試和QA環境可以解決任何問題。

此修復程序確實將我的啓動過程削減了約20秒。

0

我與JPA(Eclipselink)和Mysql數據庫 有同樣的問題,當我啓動應用程序需要1分鐘創建4個空的簡單表。

我看到日誌,如:

創建表,如果不存在......然後它說錯誤表已經存在。

上述每個日誌記錄大約需要15秒。

但是,四處搜索後,有人建議使用最新的Mysql連接器驅動程序(Jar文件),我這樣做,它現在工作正常。

所以儘量使用不同的或新的連接器jar文件,你的情況對PostgreSQL這將是here