2010-01-08 73 views
1

在c#的一個transactionscope中有一個選擇sql查詢(select * from table1 eg)。通常有一個環境事務,但如果我執行這個SQL查詢時抑制環境事務,是否有性能增益?在抑制事務範圍內執行select 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

是 - 因爲TransactionScope的(如您已在示例中使用它)使用了Serializable隔離級別,抑制它不需要是隔離級別的保護將防止讀鎖被某些查詢在DB服務器上(特別是如果您使用READ COMMITTED SNAPSHOT作爲默認隔離級別)。另外,如果您已經完成的其他事情會將交易推向DTC(即多個連接等),您將節省時間來協調DTC,這可能會很慢。

+0

感謝nitzmahone。我更新了我的問題。此選擇查詢使用「無鎖」表提示。 – mkus 2010-01-08 09:31:50