Выполнение запроса select sql в области скрытых транзакций - PullRequest
1 голос
/ 08 января 2010

Существует SQL-запрос на выборку (выберите * из таблицы, например) по схеме в области транзакций в c #. Обычно есть внешняя транзакция, но если я подавляю внешнюю транзакцию при выполнении этого 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 Ответ

1 голос
/ 08 января 2010

Да - поскольку TransactionScope (как вы использовали его в своем примере) использует уровень изоляции Serializable, подавление его для определенных запросов, которые не нуждаются в защите этого уровня изоляции, предотвратит блокировку чтения на БД сервер (особенно если вы используете READ COMMITTED SNAPSHOT в качестве уровня изоляции по умолчанию). Кроме того, если другие действия, которые вы сделали, будут продвигать транзакцию к DTC (например, множественные соединения и т. Д.), Вы сэкономите время для координации DTC, что может быть медленным.

...