在抑制的事务范围中执行select sql查询

时间:2010-01-08 09:14:44

标签: c# performance transactionscope

在c#的transactioncope中设计了一个选择sql查询(例如,从table1中选择*)。通常存在环境事务但是如果我在执行此sql查询时禁止环境事务,是否有性能提升?

using (TransactionScope scope1 = new TransactionScope())
{
     // here there are some business processes

   using (TransactionScope scope1 = new TransactionScope(TransactionScopeOption.Suppressed)) //Is this suppressed transaction scope useful in terms of performance?
   {

       //Here there is a select sql query with no lock table hint.
   }
}

1 个答案:

答案 0 :(得分:1)

是的 - 因为TransactionScope(正如您在样本中使用它)使用Serializable隔离级别,对于某些不需要保护该隔离级别的查询来禁止它会阻止对DB进行读取锁定服务器(特别是如果您使用READ COMMITTED SNAPSHOT作为默认隔离级别)。此外,如果您已经完成的其他事情会将事务推广到DTC(即多个连接等),您将节省协调DTC的时间,这可能会很慢。