ВУЗ:
Составители:
Рубрика:
121
try
{
//Выполняем команды, вызываем одну или несколько хранимых процедур
//Подтверждаем транзакцию
myCommand.Transaction.Commit();
}
catch(Exception ex)
{
//Отклоняем транзакцию
myCommand.Transaction.Rollback();
}
finally
{
//Закрываем соединение
conn.Close();
}
При выполнении транзакций несколькими пользователями одной базы
данных могут возникать следующие проблемы:
• Dirty reads – «грязное» чтение. Первый пользователь начинает транзакцию,
изменяющую данные. В это время другой пользователь (или создаваемая
им транзакция) извлекает частично измененные данные, которые не яв-
ляются корректными.
• Non-repeatable reads – неповторяемое чтение. Первый пользователь начи-
нает транзакцию, изменяющую данные. В это время другой пользователь
начинает и завершает другую транзакцию. Первый пользователь при по-
вторном чтении данных (например, если в его транзакцию входит не-
сколько инструкций SELECT) получает другой набор записей.
• Phantom reads – чтение фантомов. Первый пользователь начинает транзак-
цию, выбирающую данные из таблицы. В это время другой пользователь
начинает и завершает транзакцию, вставляющую или удаляющую записи.
Первый пользователь получит другой набор данных, содержащий фанто-
мы – удаленные или измененные строки.
Для решения этих проблем разработаны четыре уровня изоляции тран-
закции:
• Read uncommitted. Транзакция может считывать данные, с которыми рабо-
тают другие транзакции. Применение этого уровня изоляции может при-
вести ко всем перечисленным проблемам.
• Read committed. Транзакция не может считывать данные, с которыми рабо-
тают другие транзакции. Применение этого уровня изоляции исключает
проблему «грязного» чтения.
Страницы
- « первая
- ‹ предыдущая
- …
- 119
- 120
- 121
- 122
- 123
- …
- следующая ›
- последняя »