2013-10-01 41 views
0

我有簡單的spring + hibernate + mysql項目。打開mysql服務器上的查詢日誌,我看到許多頻繁的「SET autocommit = 0; commit; SET autocommit = 0」語句,而沒有在我的應用程序上執行任何操作。很多mysql + hibernate中的空sql語句

哪個進程/爲什麼我的應用程序正在執行這些頻繁的查詢?我已經列出了連接池配置。

請注意:

  • 平常SQL查詢(從我的應用程序)正在這裏
  • 記錄這些日誌像每1-4秒的非常頻繁。
  • 如果我取消部署我的應用程序的所有這些 「SET自動提交= 0; COMMIT; SET 自動提交= 0」 的日誌將停止

    131001 10時41分31秒2046查詢中設置自動提交= 0 2046查詢提交 2046查詢SET自動提交= 1個 2046查詢SET自動提交= 0 2046查詢提交 2046查詢SET自動提交= 1個 2046查詢SET自動提交= 0 2046查詢提交 2046查詢SET自動提交= 1 2061查詢SET自動提交= 0 2061查詢提交 2061查詢SET自動提交= 1個 2061查詢SET自動提交= 0 2061查詢提交 2061查詢SET自動提交= 1個 2061查詢SET自動提交= 0 2061查詢提交 2061查詢SET自動提交= 1 131001 10 :41:34 2051查詢SET自動提交= 0 2051查詢提交 2051查詢SET自動提交= 1個 2051查詢SET自動提交= 0 2051查詢提交 2051查詢SET自動提交= 1個 2051查詢SET自動提交= 0 2051查詢提交 2051查詢集自動提交= 1 2047查詢中設置自動提交= 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> 
    

回答

1

當你的應用程序啓動一個事務這些日誌輸出。嘗試使用jstack轉儲堆棧跟蹤,並查看哪些線程以及何時打開事務。

一些參考:

innodb and autocommit
jstack