全面的乐观并发还是导致死锁的table?

Optimistic concurrency across the board or just the table which is causing deadlocks?

我正在使用旧版 EF 系统,该系统在更新时出现了一些死锁。它使用悲观并发。我想摆脱它,因此我允许更新以支持乐观并发的 table。我想知道我是否需要通过所有 table 实现乐观并发,或者只是我认为处于死锁状态的那些(正在更新的 table)?任何想法表示赞赏。

此致, 拉斯金

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

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

永远不会从悲观锁定更改为乐观锁定只是为了避免死锁...

你可能 运行 无一例外地犯错误。一切似乎 运行 都很好,但一段时间后您发现您的数据已损坏...

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

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

祝你好运!