繁体   English   中英

使用多个线程从同一个表更新不同的行会导致由于表/页锁而导致的更新死锁或延迟吗?

[英]Will updating different rows from same table using multiple threads cause any deadlocks or delay in updates due to table/page locks?

我有一个场景,我必须使用SQL Server存储过程更新表中的多行。

我正在使用线程来快速进行更新(C#console application + ADO.NET)。

每个线程将更新该表中的不同行集。

我很好奇它会导致SQL中的任何死锁吗?

更多细节:

我有独立的线程,他们不共享任何共同的资源。 我更担心SQL锁定机制,因为多个线程调用相同的存储过程来更新相同的表但不同的记录集(不同的行)。

它不应该导致任何死锁(只要没有奇怪和复杂的约束)。

当您使用像快照这样的大量TransIsolation时,它可能会导致线程必须等待彼此的延迟。 但是使用默认的ReadCommitted,你应该没问题。

如果你不正确地处理它们,线程可能会陷入僵局。 如果你想要安全。 只是用

Monitor Class 

这将限制并锁定您当前的线程。

如果您在桌面上没有任何相关索引,那么您遇到了一些麻烦。

除此之外你应该没问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM