1

C#のトランザクションスコープには、設計による選択SQLクエリ(select * from table1 eg)があります。通常、アンビエントトランザクションがありますが、この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.
   }
}
4

1 に答える 1

1

はい- TransactionScope (サンプルで使用したように) は Serializable 分離​​レベルを使用するため、その分離レベルの保護を必要としない特定のクエリに対してそれを抑制すると、DB サーバーで読み取りロックが取得されなくなります (特にデフォルトの分離レベルとして READ COMMITTED SNAPSHOT を使用している場合)。また、他の操作によってトランザクションが DTC に昇格する場合 (つまり、複数の接続など)、時間がかかる可能性がある DTC を調整する時間を節約できます。

于 2010-01-08T09:20:33.720 に答える