java - mysql + hibernate中有很多空sql语句

标签 java mysql sql spring hibernate

我有简单的 spring + hibernate + mysql 项目。打开 mysql 服务器上的查询日志,我看到很多很多频繁的“SET autocommit=0;commit;SET autocommit=0”语句,而没有在我的应用程序上执行任何操作。

我的应用程序的哪个进程/为什么执行这些频繁的查询?我在下面列出了连接池配置。

请注意:

  • 通常的 SQL 查询(来 self 的应用程序)正在运行并记录在此处
  • 这些日志非常频繁,例如每秒 1-4 个。
  • 如果我取消部署我的应用程序,所有这些“SET autocommit=0;commit;SET autocommit=0"日志将停止

    131001 10:41:31 2046 Query SET autocommit=0 2046 Query commit 2046 Query SET autocommit=1 2046 Query SET autocommit=0 2046 Query commit 2046 Query SET autocommit=1 2046 Query SET autocommit=0 2046 Query commit 2046 Query SET autocommit=1 2061 Query SET autocommit=0 2061 Query commit 2061 Query SET autocommit=1 2061 Query SET autocommit=0 2061 Query commit 2061 Query SET autocommit=1 2061 Query SET autocommit=0 2061 Query commit 2061 Query SET autocommit=1 131001 10:41:34 2051 Query SET autocommit=0 2051 Query commit 2051 Query SET autocommit=1 2051 Query SET autocommit=0 2051 Query commit 2051 Query SET autocommit=1 2051 Query SET autocommit=0 2051 Query commit 2051 Query SET autocommit=1 2047 Query SET autocommit=0

    <bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
         <property name="driverClass" value="com.mysql.jdbc.Driver" />
         <property name="jdbcUrl" value="" />
         <property name="username" value="..."/>
         <property name="password" value="..."/>
         <property name="idleConnectionTestPeriodInMinutes" value="60"/>
         <property name="idleMaxAgeInMinutes" value="240"/>      
         <property name="maxConnectionsPerPartition" value="30"/>
         <property name="minConnectionsPerPartition" value="5"/>
         <property name="partitionCount" value="3"/>
         <property name="acquireIncrement" value="5"/>                              
         <property name="statementsCacheSize" value="300"/>
         <property name="releaseHelperThreads" value="3"/>
         <property name="connectionTestStatement" value="/* ping *\/ SELECT 8"/>
    
     </bean>
    

最佳答案

这些日志在您的应用程序启动事务时输出。尝试使用jstack转储堆栈跟踪并查看哪些线程以及何时打开事务。

一些引用:

innodb and autocommit
jstack

关于java - mysql + hibernate中有很多空sql语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19110938/

相关文章:

php - 自动生成 mysqli_fetch_array 列结果

sql - 为什么显示 SQL 语句的进度不切实际?

java - 比较jpa中的时间戳列而不丢失微秒

java - 显示 Java GUI 是否需要一些特殊处理?

JavaFX:ExecutorService.awaitTermination 不通过绑定(bind)属性更新 UI

mysql - 统计相似属性值

python - 如何使用 pyodbc 获取 SQL Server 存储过程的返回值?

java - JNA 示例程序 java.lang.NoClassDefFoundError

java - 使用MouseListener画圆圈?

php - 在 ListView 中从 php 服务器检索 mysql 数据到 android