Teradata多个连接INSERT死锁

时间:2014-10-09 20:07:37

标签: java teradata

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

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

有时它工作正常,但在其他情况下它会挂起。我理解这是因为我插入到同一个表中,因此它被锁定。

如何编写INSERT语句,使其无法锁定表格?

是否有任何特殊的transaction start . .命令可以防止表被锁定?另外,我很好奇为什么它有时候工作得很好?

PS:我使用的最大连接数是1024(有时是完美的)

由于

1 个答案:

答案 0 :(得分:1)

1024会话完全是疯了。您的DBA应该阻止您的用户。

当您使用相同的PI加载多行时,可能会遇到阻止的会话。

单行INSERT是加载数据的最慢方式。批量大小为1000的单个会话将胜过几十个单行会话(但之后只使用一个会话)。

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

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

这是一个临时表吗?