java - 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;
}
我可以在我的代码中做些什么来避免锁定数据库?
解决方案
推荐阅读
- entity-framework-core - Visual Studio 2019 继续寻找以前的 DbContext,即使在将其替换为新的 DbContext 后也是如此
- c - 如何知道变量是否是C中的函数指针?
- google-apps-script - 使用 Google Apps 脚本在工作表中创建组合图(带烛台的条形图)
- python - Beautifulsoup 分页
- ios - 为什么firebase会生成新的文档ID?
- c# - 如何在单个 SQL 事务中在多个相互依赖的表中插入记录?
- python - Python:cerberus check_with 函数
- python - 如何使用 Python for Chrome 驱动程序处理 Selenium 中的警报弹出通知
- sqlite - 当 SQLite 提供程序无法删除列时,如何删除最近的 EFCore 迁移
- amazon-web-services - AWS codepipeline 杀死脚本“docker compose not working”