- •Тема 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  | 
	
  | 
