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