Rob*_*Rob 7 c# sql-server transactions
我是否正确地说从性能角度来看,sql事务在存储过程中比代码好得多?
目前我在存储过程中使用了大部分事务,但有时我使用代码来处理更复杂的例程 - 显然我尽可能地保持最小化.
只是有一个复杂的例程需要太多的"变量",在c#中编写sql事务要比使用SQL Server容易得多.这是代码可读性和性能之间的界限.
有任何想法吗?
表现各不相同; a SqlTransaction可以比a更少开销TransactionScope,特别是如果TransactionScope决定它需要与DTC纠缠在一起.但除了额外的往返之外,我不希望和a 之间存在巨大差异.但是,仍然很快,并且是在事务中封装多个操作的最方便的选项,因为每次都不需要手动将环境事务与命令相关联.SqlTransactionBEGIN TRANTransactionScope
也许更好(更重要)的因素是隔离级别.TransactionScope默认为最高(可序列化).较低的隔离级别允许更少的阻塞(但存在不可重复读取的风险等).IIRC TSQL事务默认为较低级别之一.但是可以针对所有3个选项调整隔离级别.