我已经建立了一个休息服务来插入大行。要插入大量行,我正在批量使用插入。什么可能导致这个 restful 服务片段中的死锁。
final SqlMapClient sqlMapClient = getSqlMapClientTemplate().getSqlMapClient();
sqlMapClient.startTransaction();
sqlMapClient.startBatch();
//data is of size say 10,000 i am dividing into 500 and inserting
do {
data500 = next 500 of data
getSqlMapClientTemplate().insert("insertData", data500);
}while(data500 is not empty)
sqlMapClient.executeBatch();
sqlMapClient.commitTransaction();
但我收到此错误:
说明:org.springframework.dao.ConcurrencyFailureException: SqlMapClient 操作;SQL []; --- 应用参数映射时发生错误。 --- 检查 insertData-InlineParameterMap。 --- 检查语句(更新失败)。 --- 原因:java.sql.SQLException:事务(进程 ID 3121)与另一个进程在锁资源上死锁,并被选为死锁牺牲品。重新运行事务。; 嵌套异常是 com.ibatis.common.jdbc.exception.NestedSQLException: