- •Тема 10. Транзакции и целостность БД
- •Целостность БД - правильность и непротиворечивость ее содержимого
- •Выполнение и откат транзакции
- •Модель автоматического выполнения транзакций
- •Модель управляемого выполнения транзакций
- •Общие требования к системе восстановления данных в составе СУБД
- •Пропавшие обновления
- •Чтение «грязных» данных
- •Чтение несогласованных данных
- •Сериализация транзакций
- •Захват и освобождение объекта
- •Транзакция –
Тема 10. Транзакции и целостность БД
10.1.Модели транзакций
10.2.Журнал транзакций
10.3.Параллельное выполнение транзакций
10.4.Сериализация транзакций
10.5.Захват и освобождение объекта
Целостность БД - правильность и непротиворечивость ее содержимого
на уровне отдельных |
на уровне базы данных |
объектов и операций |
в целом |
Транзакция – неделимая с точки зрения воздействия на БД последовательность операторов манипулирования данными (чтения, удаления, вставки, модификации)
такая, что:
либо результаты всех операторов, входящих в транзакцию, отображаются в БД;
либо воздействие всех этих операторов полностью отсутствует.
Выполнение и откат транзакции
Нарушение
целостности
Исходное |
Исходное |
состояние |
состояние |
Измененная
БД
COMMIT |
ROLLBACK |
Модель автоматического выполнения транзакций
|
Непротиворечивая |
|
БД |
INSERT |
INSERT |
COMMIT |
COMMIT |
|
Непротиворечивая |
|
БД |
UPDATE |
UPDATE |
COMMIT |
ROLLBACK |
Непротиворечивая БД
Транзакция автоматически начинается с выполнения пользователем или программой первой инструкции SQL. Завершается последовательное выполнение инструкций одним из двух способов:инструкцией COMMIT (изменения, внесенные в БД, становятся постоянными, а новая транзакция начинается сразу после инструкции COMMIT);
инструкцией ROLLBACK (отменяет выполнение текущей транзакции и возвращает БД к состоянию начала транзакции, новая транзакция начинается сразу после инструкции ROLLBACK).
Модель управляемого выполнения транзакций
Исходное состояние БД
BEGIN TRANSACTION
UPDATE
SAVE TRANSACTION A
INSERT
ROLLBACK TO A
DELETE
COMMIT TRANSACTION
Состояние БД после транзакции
Точка сохранения А
BEGIN TRANSACTION сообщает о начале транзакции;
COMMIT TRANSACTION сообщает об успешном выполнении транзакции (новая транзакция не начинается автоматически);SAVE TRANSACTION позволяет создать внутри транзакции точку сохранения;ROLLBACK отменяет выполнение текущей транзакции и возвращает БД к состоянию SAVE TRANSACTION или к состоянию начала транзакции.
Общие требования к системе восстановления данных в составе СУБД
Пользователь не должен осуществлять рестарт транзакций или повторный ввод данных. Восстановление должно проходить на базе транзакции с помощью отмены или изменения отдельных транзакцийБыстрое восстановление данных обеспечивается генерацией данных, используемых для восстановленияПри выполнении процедур автоматизированного восстановления
пользователь не должен анализировать состав данных и выбирать сами процедуры.
Сервисные программные средства:
Программы ведения системного журнала (регистрируют операции над БД)
Программы архивации (регулярное получение копий БДПрограммы восстановления (возврат БД или некоторых ее частей в состояние, предшествующее возникновению отказа)
Программы отката (ликвидируют последствия выполнения определенной транзакции в БД)
Программы записи контрольных точек и повторного исполнения
Пропавшие обновления
Чтение «грязных» данных
Чтение несогласованных данных
Сериализация транзакций
Виды конфликтов между транзакциями
W-W – конфликт |
R-W – конфликт |
W-R – конфликт |
Транзакция 2 |
Транзакция 2 |
Транзакция 2 |
пытается изменять |
пытается изменять |
пытается читать |
объект, измененный |
объект, |
объект, измененный |
не закончившейся |
прочитанный не |
не закончившейся |
Транзакцией 1 |
закончившейся |
Транзакцией 1 |
|
Транзакцией 1 |
|