Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Умк_Базы.doc
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
3 Мб
Скачать
☆

6.1.5. Уровни изолированности пользователей.

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

Уровни изолированности пользователей связаны с проблемами, которые возникают при параллельном выполнении транзакций и которые были рассмотрены ранее. Существуют 4 уровня изолированности пользователей.

Самый высокий уровень изолированности соответствует протоколу сериализации транзакций, что обеспечивает полную изоляцию транзакций и полную корректную обработку параллельных запросов.

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

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

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

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

Вопросы для самопроверки по теме 6.1

1. Что такое транзакция?

2. Какими свойствами должна обладать транзакция?

3. Что такое eXclusive и Shared блокировка?

4. Являются ли термины захват ресурса и блокировка взаимозаменяемыми?

5. Перечислите основные проблемы модифицирующих транзакций.

6. Чем различаются методы снхронизированных захватов и временных меток?

7. Что такое уровень изолированности пользователей?

8. С помощью какого оператора оповещается СУБД об окончании транзакции?

9. Что такое откат транзакции?

10. Что может являться объектом синхронизационного захвата?