- •1. Транзакции, основные свойства и определения (понятие транзакции, основные свойства, понятие графика запуска транзакций).
- •2. Ограничения целостности, классификация ограничений целостности. Реакция системы на нарушение ограничений целостности.
- •3. Параллельное выполнение транзакций. Понятие смеси транзакций, графика запуска, эквивалентность графика запуска.
- •4. Проблемы параллельного выполнения транзакций: потеря результатов обновления, незафиксированная зависимость, несовместимый анализ (привести примеры).
- •5. Виды блокировок, правила их установки (наложения) и снятия. Использование блокировок для решения проблем параллельного выполнения транзакций. Проблемы, решаемые с помощью механизма блокировок.
- •6. Понятие тупика и условия их возникновения. Способы разрешения тупиков.
- •7. Механизм и виды преднамеренных блокировок.
- •8. Использование метода временных меток при параллельном выполнении транзакций.
- •9. Восстановление данных, ситуации при которых необходимо восстановление. Механизм восстановления данных при индивидуальном откате транзакции, при программном и аппаратном сбоях.
8. Использование метода временных меток при параллельном выполнении транзакций.
Альтернативный метод сериализации транзакций, хорошо работающий в условиях редких конфликтов транзакций и не требующий построения графа ожидания транзакций основан на использовании временных меток.
Основная идея метода состоит в следующем: если транзакция A началась раньше транзакции B, то система обеспечивает такой режим выполнения, как если бы A была целиком выполнена до начала B.
Для этого каждой транзакции T предписывается временная метка t, соответствующая времени начала T. При выполнении операции над объектом r базы данных транзакция T помечает его своей временной меткой и типом операции (чтение или изменение).
Перед выполнением операции над объектом r транзакция B выполняет следующие действия:
Проверяет, не закончилась ли транзакция A, пометившая этот объект. Если A закончилась, B помечает объект r своей временной меткой и выполняет операцию.
Если транзакция A не завершилась, то B проверяет конфликтность операций. Если операции неконфликтны, при объекте r остается или проставляется временная метка с меньшим значением (более ранняя), и транзакция B выполняет свою операцию.
Если операции B и A конфликтуют, то если t(A) > t(B) (т.е. транзакция A является более "молодой", чем B), то транзакция A откатывается и, получив новую временную метку, начинается заново. Транзакция B продолжает работу.
Если же t(A) < t(B) (A "старше" B), то транзакция B откатывается и, получив новую временную метку, начинается заново. Транзакция A продолжает работу.
В итоге система обеспечивает такую работу, при которой при возникновении конфликтов всегда откатывается более молодая транзакция (начавшаяся позже).
Очевидным недостатком метода временных меток является то, что может откатиться более дорогая транзакция, начавшаяся позже более дешевой.
К другим недостаткам метода временных меток относятся потенциально более частые откаты транзакций, чем в случае использования блокировок. Это связано с тем, что конфликтность транзакций определяется более грубо.
9. Восстановление данных, ситуации при которых необходимо восстановление. Механизм восстановления данных при индивидуальном откате транзакции, при программном и аппаратном сбоях.
Восстановление базы данных может производиться в следующих случаях:
1)Индивидуальный откат транзакции. Откат индивидуальной транзакции может быть инициирован либо самой транзакцией путем подачи команды ROLLBACK, либо системой.
Для того чтобы можно было выполнить по журналу транзакций индивидуальный откат транзакции, все записи в журнале от данной транзакции связываются в обратный список. Началом списка для не закончившихся транзакций является запись о последнем изменении базы данных (или запись о конце транзакции, если она была завершена), произведенном данной транзакцией. Концом списка всегда служит первая запись об изменении базы данных, произведенном данной транзакцией. В каждой записи имеется уникальный системный номер транзакции, чтобы можно было восстановить прямой список записей об изменениях базы данных данной транзакцией. Откат транзакции выполняется следующим образом:
1.Просматривается список записей, сделанных данной транзакцией в журнале транзакций (от последнего изменения к первому изменению).
2.Выбирается очередная запись из списка данной транзакции.
3.Выполняется противоположная по смыслу операция.
4.Любая из этих обратных операций также журнализируются (на случай мягкого сбоя).
5.При успешном завершении отката в журнал заносится запись о конце транзакции.
2)Мягкий сбой системы (аварийный отказ п.о.). Мягкий сбой характеризуется утратой оперативной памяти системы. Данные, хранящиеся на диске, остаются неповрежденными.
Последний момент, когда гарантированно во внешнюю память были вытолкнуты "грязные" страницы - это момент принятия последней контрольной точки. Имеется 5 вариантов состояния транзакций по отношению к моменту последней контрольной точки и к моменту сбоя:
T
1
- транзакция успешно завершена до
принятия контрольной точки. Все данные
этой транзакции сохранены в долговременной
памяти. Восстановления не требуется.
T2 - транзакция начата до принятия контрольной точки и успешно завершена после контрольной точки, но до наступления сбоя. Необходимо повторить заново те операции, которые были выполнены после принятия контрольной точки.
T3 - транзакция начата до принятия контрольной точки и не завершена в результате сбоя. Такую транзакцию необходимо откатить. Проблема, однако, в том, что часть страниц данных, измененных этой транзакцией, уже содержится во внешней памяти - это те страницы, которые были обновлены до принятия контрольной точки. Следов изменений, внесенных после контрольной точки в базе данных нет. Записи журнала транзакций, сделанные до принятия контрольной точки, вытолкнуты во внешнюю память, те записи журнала, которые были сделаны после контрольной точки, отсутствуют во внешней памяти журнала.
T4 - транзакция начата после принятия контрольной точки и успешно завершена до сбоя системы. Изменения в базе данных, внесенные этой транзакцией, полностью отсутствуют, а записи журнала транзакций, относящиеся к этой транзакции, вытолкнуты во внешнюю память журнала. Такую транзакцию необходимо повторить целиком.
T5 - транзакция начата после принятия контрольной точки и не завершена в результате сбоя. Никаких следов этой транзакции нет ни во внешней памяти журнала транзакций, ни во внешней памяти базы данных. Для такой транзакции никаких действий предпринимать не нужно, ее как бы и не было вовсе.
3)Жесткий сбой системы (аварийный отказ аппаратуры). Жесткий сбой характеризуется повреждением внешних носителей памяти.
При жестком сбое база данных на диске нарушается физически. Основой восстановления в этом случае является журнал транзакций и архивная копия базы данных. Архивная копия базы данных должна создаваться периодически, а именно с учетом скорости наполнения журнала транзакций.
Восстановление начинается с обратного копирования базы данных из архивной копии. Затем выполняется просмотр журнала транзакций для выявления всех транзакций, которые закончились успешно до наступления сбоя. После этого по журналу транзакций в прямом направлении повторяются все успешно законченные транзакции. При этом нет необходимости отката транзакций, прерванных в результате сбоя, т.к. изменения, внесенными этими транзакциями, отсутствуют после восстановления базы данных из резервной копии.
Наиболее плохим случаем является ситуация, когда разрушены физически и база данных, и журнал транзакций. В этом случае единственное, что можно сделать - это восстановить состояние базы данных на момент последнего резервного копирования. Для того чтобы не допустить возникновение такой ситуации, базу данных и журнал транзакций обычно располагают на физически разных дисках, управляемых физически разными контроллерами.
