TX-row lock contention:为Unique Key插入重复值

时间:2014-01-22 17:59:12

标签: java oracle hibernate locking jobs

我们在尝试插入数据时遇到 TX-row lock contention 错误

在运行一个处理带有近10000条记录的xml的作业时会发生这种情况,并将数据插入到表中

我们在表中的一列上有一个唯一的键约束,在请求中我们得到重复的值。这导致锁定,从而使工作花费更多时间。

我们正在使用hibernate和spring。我们使用的DAO方法是使用Spring Transaction Manager的@Transactional

注释的hibernate模板的“save”

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

目前尚不清楚您是否遇到锁定问题或错误。

“TX-row lock contention”是一个事件,指示两个会话正在尝试将相同的值插入主要或唯一约束列集中 - 在第一个提交之前不会引发错误,然后第二个获取错误错误。所以你肯定有多个会话插入行。如果您只有一个会话,那么您将立即收到错误,并且不会引发“TX-row lock contention”事件。

建议:

  1. 插入没有约束的临时表,然后使用消除重复的逻辑加载到真实表
  2. 在阅读XML时删除重复项。
  3. 使用Oracle的错误记录语法 - 此处示例。 http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9014.htm#SQLRF55004