Sha*_*ika 1 c# sql-server multithreading stored-procedures
我需要以线程安全的方式执行一些Sql Server存储的proc。目前,我正在使用软件锁(C#锁)来实现此目的,但想知道Sql Server本身提供了哪些功能来实现线程安全。似乎有一些内置于Sql服务器的表和行锁定功能。
从性能角度来看,什么是最佳方法?软件锁?还是Sql Server内置锁?
谢谢,Shamika
客户端的线程与数据库行为几乎没有关系。SQL Server是一个多用户数据库,因此任何人都可以同时对另一台计算机上的数据库执行任何操作,而世界上所有的线程安全都将无济于事。SQL Server将在事务期间使用锁来维护数据库,以确保维护ACID规则和所有数据库约束。
通常,当您在同一线程的单台计算机上执行存储过程时,它们将是顺序的并且不会发生冲突。如果您有多个线程或使用ADO.NET的异步功能,则可以想象这些过程可能在SQL Server中相互干扰(即阻塞或死锁),但是SQL Server将处理所有这些事情。显然,在这种情况下,应用中包含的所有代码都必须是线程安全的-即,您不能对两个请求使用相同的IAsyncResult句柄,您需要确保两个线程都不会尝试修改与完成等的结果
您需要更加清晰地列出您的需求,因为这是两种完全不同的锁定方案。
| 归档时间: |
|
| 查看次数: |
3738 次 |
| 最近记录: |