Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Часть I.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
795.65 Кб
Скачать

Отказы транзакций.

Транзакция БД – это фрагмент выполняемой программы, заключенной между процедурами Начало_транзакции и Конец_транзакции. Программист рассматривает такой фрагмент как обособленную секцию, на доступ которой к БД не могут повлиять другие транзакции.

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

  • Дубликаты записей.

Записи, хранящиеся в БД объединяются в блоки. Для изменения записи:

  1. Блок помещается в буфер оперативной памяти.

  2. Перед корректировкой блок копируется в файл дубликатов. Дубликат – копия блока до корректировки.

  3. Корректируется запись в буфере.

  4. Блок из буфера переписывается в главную БД, на прежнее место (по тому же адресу).

Итак, до конца транзакции. Если произошел сбой, то можно восстановить прежнее содержимое БД, скопировав блоки из дубликата на прежнее место. Этот метод называют повторным прогоном. Если происходит физическое повреждение дисков. Этот метод не эффективен, так как испорченный блок может не иметь дубликата

  • Образы скопированных записей.

  1. Выбирается запись для корректировки.

  2. После изменения заносится в файлы образов.

  3. Процедура Конец_транзакции переписывает образы в БД.

Поиск записи выполняется в начале в файле образов, затем в главной БД. Процедура Отказ_транзакции отмечает выполнение пункта 3 и БД остается в исходном виде. Этот метод медленнее предыдущего, так как ищет записи в двух файлах: образы и БД.

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