Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 全局乐观并发还是仅仅是导致死锁的表?_Sql_.net_Entity Framework_Concurrency_Deadlock - Fatal编程技术网

Sql 全局乐观并发还是仅仅是导致死锁的表?

Sql 全局乐观并发还是仅仅是导致死锁的表?,sql,.net,entity-framework,concurrency,deadlock,Sql,.net,Entity Framework,Concurrency,Deadlock,我正在使用一个遗留的EF系统,它在更新时会给我一些死锁。它使用悲观并发。我不想这样做,因此我允许表被更新以支持乐观并发。我想知道是需要通过所有表实现乐观并发,还是只需要那些我认为处于死锁状态的表(正在更新的表)?欢迎提出任何意见 问候,, Ruskin您没有说明RDBMS,也没有说明数据的质量 有些RDBMS允许不同阶段的锁定,您应该真正了解幕后发生了什么。如果您处理敏感数据(如我所做的),则数据完整性必须始终站在性能或令人讨厌的行为(如死锁)之前。这取决于您存储的数据。有时一个人可以接受小的完

我正在使用一个遗留的EF系统,它在更新时会给我一些死锁。它使用悲观并发。我不想这样做,因此我允许表被更新以支持乐观并发。我想知道是需要通过所有表实现乐观并发,还是只需要那些我认为处于死锁状态的表(正在更新的表)?欢迎提出任何意见

问候,,
Ruskin

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

有些RDBMS允许不同阶段的锁定,您应该真正了解幕后发生了什么。如果您处理敏感数据(如我所做的),则数据完整性必须始终站在性能或令人讨厌的行为(如死锁)之前。这取决于您存储的数据。有时一个人可以接受小的完整性破坏的风险

我永远不会从悲观锁定转变为乐观锁定,只是为了避免死锁

你可能会无一例外地犯错误。一切似乎都运行得很好,但一段时间后,你发现,你的数据被破坏了

我的建议是:使用一种剖析器来了解真正发生的事情。大多数死锁都有其原因。如果更改流程,大多数死锁都很容易避免。但这一点——特别是与遗留软件相关的问题——可能很难做到

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


祝你好运

谢谢,我使用的是SQL(标记),不确定数据的“质量”是什么意思。我明白死锁不是魔鬼,有时你无法避免它们。因此,这一切都是关于死锁和数据的良好管理,以及编写更好的应用程序代码:)@Ruskin,关于“质量”,我刚才说的是您正在处理的数据的“种类”。交易性财务数据是指除天气测量数据以外的其他数据。在我的工作中——正如我之前所说——数据完整性比性能更重要。@Ruskin,还有一点:我问过你关于RDBMS的问题,你的回答是“SQL(标记)”。有必要说明您的产品(MySQL、SQL Server、Oracle…)和版本。特别是关于锁定的问题,这些产品之间可能有很大的不同。。。