java - Teradata 多个连接 INSERT 死锁

标签 java teradata

我创建多个连接并同时批量插入到 myTable 中(多线程)

insertString = "INSERT INTO ... + values + ") "; 
insertTable.addBatch(insertString); 
insertTable.executeBatch();
insertTable.clearBatch(); 

有时它工作正常,但在其他情况下它会挂起。我明白这是因为我正在插入同一个表,所以它被锁定。

如何编写 INSERT 语句使其不锁定表?

是否有任何特殊的交易开始。 。 命令可以防止表被锁定?另外,我很好奇为什么有时它可以正常工作?

PS:我使用的最大连接数是 1024(有时工作正常)

谢谢

最佳答案

1024 session 完全是疯了。您的 DBA 应该为此阻止您的用户。

当您加载具有相同 PI 的多行时,您可能会遇到阻塞 session 。

单行插入是加载数据最慢的方式。批量大小为几千个的单个 session 将优于数十个单行 session (但仅使用一个 session )。

或者如果目标表为空,则切换到 JDBC FastLoad。

检查 http://developer.teradata.com/connectivity/articles/speed-up-your-jdbcodbc-applications

这是临时表吗?

关于java - Teradata 多个连接 INSERT 死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26287093/

相关文章:

hadoop - 为什么 sqoop 将导入中的 DECIMAL 类型从 Teradata 映射到 DOUBLE?

sql - 如何在 Teradata 中使用 SELECT 语句在数据库之间传输数据

java - org.postgresql.*;类未找到错误

java - 处理java中的OutOfMemory错误

java - IdentityManager接缝问题

sql - 在 SAS 隐式 Sql 传递中使用 Teradata UDF

sql - 从多列中获取最小值和第二最小值的最简单方法是什么(MIN 函数不起作用)?

java - 线程在 JDBC Teradata 请求上永久挂起

Java文档

java - 附加字符串时出现速度问题