Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SUBD (3).docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
50.7 Кб
Скачать

22 Ситуация восстановления состояния базы данных

1. Вначале производится процедура restore -- необходимая информация восстанавливается с носителя. Вы можете восстановить только полную резервную копию, а уже после этого произвести восстановление разностной резервной копии и резервных копий журналов транзакций. Официальное название этого этапа -- фаза копирования данных (data copy phase).

2. Если производится также восстановление журналов транзакций, то следующим действием SQL Server записывает в базу данных всю информацию о завершенных транзакциях из журнала транзакций. Эта операция называется roll forward (завершение). Сам этап называется фазой повтора (redo phase), а оба первых этапа вместе -- этап завершения (roll forward step).

3. Только в редакции SQL Server 2005 Enterprise Edition пользователям открывается доступ к базе данных. Открытие доступа на этом этапе -- это новая возможность SQL Server 2005. Она имеет свое название -- fast recovery (быстрое восстановление). Если же пользователь попытается обратиться к данным, измененным незавершенными транзакциями, то доступ ему будет закрыт за счет механизма блокировок.

4. Затем SQL Server обнаруживает в журнале все незавершенные транзакции и отменяет их. Эта операция называется rollback -- откат транзакций, а сам этап называется этапом отката (rollback phase).

5. После этого к базе данных открывается доступ в обычном режиме во всех версиях SQL Server.

23 Типы конфликтов между двумя параллельными транзакциями

Неповторяющееся чтение

В транзакции 2 выбирается значение поля f2, затем в транзакции 1 изменяется значение поля f2. При повторной попытке выбора значения из поля f2 в транзакции 1 будет получен другой результат. Эта ситуация особенно неприемлема, когда данные считываются с целью их частичного изменения и обратной записи в базу данных. "Грязное" чтение

В транзакции 1 изменяется значение поля f1, а затем в транзакции 2 выбирается значение поля f2. После этого происходит откат транзакции 1. В результате значение, полученное второй транзакцией, будет отличаться от значения, хранимого в базе данных.  Потерянное обновление

В транзакции 1 изменяется значение поля f1, а затем в транзакции 2 также изменяется значение этого поля. В результате изменение, выполненное первой транзакцией, будет потеряно. Фантомная вставка

В транзакции 2 выполняется SQL-оператор, использующий все значения поля f2. Затем в транзакции 1 выполняется вставка новой строки, приводящая к тому, что повторное выполнение SQL-оператора в транзакции 2 выдаст другой результат. Такая ситуация называется фантомной вставкой и является частным случаем неповторяющегося чтения. При этом, если выполняемый SQL-оператор выбирает не все значения поля f2, а только значение одной строки таблицы (используется предикат WHERE), то выполнение оператора INSERT не приведет к ситуации фантомной вставки.

24 Блокировки. Правила применения Жёсткой и нежёсткой блокировок транзакций.

Блокировки Блокировками (locks) называются механизмы, применяемые для управления параллельными изменениями данных. Существует два типа блокировок:

  • оптимистические блокировки (optimistic locks) - предотвращают возникновение конфликтных ситуаций, выполняя при необходимости откат транзакции (такие блокировки в стандарте SQL-92 не поддерживаются);

  • пессимистические блокировки (pessimistic locks) - предотвращают возникновение конфликтных ситуаций, блокируя одновременный доступ к данным для одновременных транзакций.

Блокировки, используемые уровнями изоляции, подразделяются на:

  • разделяемые блокировки (S-locks), которые могут одновременно устанавливаться несколькими пользователями;

  • исключительные блокировки (X-locks), которые устанавливаются только одним пользователем, получающим эксклюзивный доступ к данным.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]