Jus*_*tin 5 mysql hibernate jpa hikaricp
我们正在将Java模板的持久层从JDBC模板重构为JPA/Hibernate.
我正在分析发给数据库的SQL语句,我看到很多次发出"SHOW WARNINGS".据JProfiler称,"SHOW WARNINGS"占据了相当数量的"固有时间".
什么可能导致SHOW WARNINGS频繁发布?
使用Jdbc模板时,以前未发布此SHOW WARNINGS.
下面是与持久性相关的堆栈部分.这里唯一的变化是引入了JPA/Hibernate.
编辑:这是发布SHOW WARNINGS时的示例堆栈跟踪.
com.mysql.jdbc.StatementImpl.getWarnings()
com.zaxxer.hikari.proxy.PreparedStatementJavassistProxy.getWarnings()
org.hibernate.jpa.internal.QueryImpl.getSingleResult()
com.mysema.query.jpa.impl.AbstractJPAQuery.getSingleResult(javax.persistence.Query)
com.mysema.query.jpa.impl.AbstractJPAQuery.uniqueResult()
com.mysema.query.jpa.impl.AbstractJPAQuery.uniqueResult(com.mysema.query.types.Expression)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[ ])
com.sun.proxy.$Proxy115.findOne(com.mysema.query.types.Predicate)
Run Code Online (Sandbox Code Playgroud)
这是为什么显示警告:
org.hibernate.engine.jdbc.spi.SqlExceptionHelper.handleAndClearWarnings()正在呼叫com.mysql.jdbc.StatementImpl.getWarnings().
Hibernate源代码中的注释说:
"请参阅HHH-9174.对于许多JDBC库,语句#getWarnings可能是一个昂贵的调用.除非日志级别实际上允许记录警告,否则不要这样做."
我将"org.hibernate"上的logback.xml上的日志记录级别提升为ERROR.分析显示SHOW WARNINGS查询不再发布.
这使得业绩略有改善.
我将不胜感激任何关于在这里禁用SHOW WARNINGS实际上是一个好主意的意见.
| 归档时间: |
|
| 查看次数: |
2869 次 |
| 最近记录: |