Базы данных - модели, разработка, реализация



         

Уровни изолированности пользователей - часть 2


Однако окончательные данные, полученные в ходе выполнения других транзакций, могут быть доступны нашей транзакции. При этом уровне изолированности транзакция не может обновлять строку, уже обновленную другой транзакцией. При попытке выполнить подобное обновление транзакция будет отменена автоматически, во избежание возникновения проблемы пропавшего обновления.

И наконец, самый низкий уровень изолированности называется уровнем неподтвержденного, или грязного, чтения. Он обозначается как READ UNCOMMITED. При этом уровне изолированности текущая транзакция видит промежуточные и несогласованные данные, и также ей доступны строки-призраки. Однако даже при этом уровне изолированности СУБД предотвращает пропавшие обновления.

В стандарте SQL2 существует оператор задания уровня изолированности выполнения транзакции. Он имеет следующий синтаксис:

241

  • SET TRANSACTION IZOLATION LEVEL [{SERIALIZABLE |
  • REPEATABLE READ |
  • READ COMMITED |
  • READ UNCOMMITED}] [{READ WRITE |
  • READ ONLY }]
  • Дополнительно в этом операторе может быть указано, операции какого типа выполняются в транзакции. По умолчанию предполагается уровень SERIALIZABLE. Если задан уровень READ UNCOMMITED, то допустимы только операции чтения в транзакции, поэтому в этом случае нельзя установить операции READ WRITE. На рис. 11.11 приведено соответствие уровней изолированности транзакций и проблем, возникающих при параллельном выполнении транзакций.

    Уровень изоляции Появление пропавших обновлений Появление промежуточных данных Появление несогласованных данных Появление строк - призраков
    SERIALIZABLE СУБД предотвращает СУБД предотвращает СУБД предотвращает СУБД предотвращает
    REPEATABLE READ СУБД предотвращает СУБД предотвращает СУБД предотвращает Может произойти
    READ COMMITED СУБД предотвращает СУБД предотвращает Может произойти Может произойти
    READ UNCOMMITED СУБД предотвращает Может произойти Может произойти Может произойти

    Рис.11.11. Уровни изолированности транзакций и проблемы многопользовательской работы

    В разных коммерческих СУБД могут быть реализованы не все уровни изолированности, это необходимо выяснить в технической документации.

    242

    241 :: 242 :: Содержание




    Содержание  Назад  Вперед