全面的乐观并发或只是导致死锁的表?

时间:2015-11-11 01:39:05

标签: sql .net entity-framework concurrency deadlock

我正在使用传统的EF系统,这让我在更新时遇到了一些僵局。它使用悲观并发。我想摆脱这一点,因此我已经允许更新的表以支持乐观并发。我想知道我是否需要通过所有表实现乐观并发,或者只是我认为是死锁的表(正在更新的表)?任何想法都表示赞赏。

此致 罗斯金

1 个答案:

答案 0 :(得分:0)

您没有说明RDBMS,也没有说明数据的质量。

有些RDBMS允许不同的锁定阶段,你应该真正了解幕后发生的事情。如果您处理合理的数据(就像我一样),数据完整性必须始终坚持之前性能或恼人的行为(如死锁)。这取决于您存储的数据。有时可以接受小完整性破坏的风险......

我会从不从悲观锁定变为乐观只是为了避免死锁......

你可能会遇到错误,没有例外。一切似乎运行得很好,但有一段时间后你会发现,你的数据已被破坏......

我的建议:使用一种分析器来了解真正发生的事情。大多数死锁都有其糟糕结构的原因。如果更改过程,大多数死锁都很容易避免。但是这一点 - 特别是与传统软件有关 - 可能很难。

可能是,您的遗留软件调用RDBMS中的代码(例如存储过程)可能是,您可以在不更改调用软件的情况下更改某些内容...

祝你好运!