首页 > 解决方案 > MySQL 在一分钟内执行数千次持续插入后一直锁定

问题描述

我有一个在 tomcat 7 中运行的 java 应用程序,并使用 Spring JDBCTemplate 对 MySQL 数据库(Windows 10 上的 5.1.73-community)执行连续不间断的快速插入。

经过大约一分钟的不断插入后,不仅无法从我在 tomcat 中的 java 应用程序访问 mysql 数据库服务,而且我也无法从像 Squirrel 这样的第 3 方客户端登录到 mysql。

一旦我杀死了 tomcat,我就可以从 squirrel 登录到 mysql 或重新启动我的应用程序,它再次运行良好......直到不断插入再次锁定数据库。

这是执行插入的代码

  public int insertRecord(final String sql,final Object[] paramArray, KeyHolder keyHolder) {

    Integer retStatus = jdbcTemplate.update(new PreparedStatementCreator() { 

      public PreparedStatement createPreparedStatement(Connection con) 
      throws SQLException { 
          String[] keyColNames=new String[1];
          PreparedStatement ps=con.prepareStatement(sql,keyColNames); 
          if(paramArray!=null){
            int size=paramArray.length;
            for(int i=0;i<size;i++){
              ps.setObject(i+1, paramArray[i]);
            }
          }

          return ps; 
        } 
      }, keyHolder);  
    return retStatus;
  }

我可以在我的代码中做些什么来避免锁定数据库?

标签: javamysqljdbctemplate

解决方案


推荐阅读