Транзакция должна начинаться и завершаться при согласованном (целостном) состоянии БД.
Теперь можно уточнить понятие транзакции.
Транзакция – это последовательность действий над базой данных, выполняемая по запросам одного пользователя или приложения и переводящая БД из согласованного начального состояния в согласованное конечное состояние.
Это – основное требование к транзакции. Оно означает, что система должна гарантировать а) целостность состояния БД к моменту начала очередной транзакции, б) выполнение проверок всех ограничений целостности к моменту завершения транзакции.
Подчеркнём, что промежуточные состояния БД могут быть несогласованными.
Транзакция может завершиться одним из двух возможных способов – фиксацией или откатом.
Если к моменту завершения транзакции удовлетворены все ограничения целостности, то новое состояние БД фиксируется (COMMIT TRANSACTION).
Если к моменту завершения транзакции состояние БД не удовлетворяет хотя бы одному ограничению целостности, то все обновления данных, произведённые транзакцией, должны быть отменены, и БД должна быть возвращена в исходное состояние. Процедура отмены обновлений называется откатомтранзакции (ROLLBACK TRANSACTION).
Напомним, что все операции обновления данных применяются к содержимому рабочего буфера СУБД. Поэтому фиксация транзакции означает, что система должна в дальнейшем воспринимать новое состояние буфера как часть согласованного состояния БД.
Откат транзакции означает, что система должна восстановить то состояние буфера, которое существовало на момент начала транзакции.
Для того чтобы обеспечить возможность отката транзакции, система поддерживает специальный служебный файл. Он называется системным журналом. Записи журнала содержат детальные сведения обо всех операциях каждой транзакции. В них для каждой транзакции фиксируется
- идентификатор транзакции,
- идентификатор пользователя, запустившего транзакцию,
- время начала транзакции,
- время и способ завершения транзакции.
Для каждой операции фиксируется идентификатор транзакции, в которой выполнялась операция, время начала операции, идентификатор обрабатываемого элемента данных, тип операции, копия элемента данных до операции (для операций обновления значения и удаления), копия элемента данных после операции (для операций обновления значения и вставки).
Имея эту информацию, можно выполнить откат. Для этого нужно выбрать из журнала все записи об операциях откатываемой транзакции;
расположить их в порядке, обратном хронологическому;
последовательно просматривая обратный список операций, выполнять над текущим состоянием рабочего буфера операции, обратные по смыслу.
Системный журнал используется не только для отката транзакций, но и для других целей. В частности, для восстановления БД после аварий различного рода, для сбора сведений о текущей производительности, накопления контрольной информации и т.д. Поэтому кроме информации о транзакциях записи журнала содержат ряд других сведений, о которых скажем в своё время.
Механизм транзакций – важнейший механизм технологии БД. Транзакция обладает следующими свойствами.
1) Она является неделимой единицей работы в БД – атомарность.
2) Она начинается и завершается при согласованном состоянии БД – согласованность.
Далее мы увидим, что транзакция – это не только единица работы в БД, но ещё и единица управления. СУБД одновременно исполняет несколько (возможно, очень много) транзакций. Естественно, она должна выбирать такую стратегию обработки операторов отдельных транзакций, которая исключала бы их взаимное влияние. Это называется изолированностью транзакции.
3) Система гарантирует эквивалентность результатов параллельного исполнения любого набора транзакций результатам независимого исполнения транзакций того же набора в какой-либо последовательности – изолированность.
Современные СБД – высоконадёжные системы, но абсолютной надёжностью они не обладают. В любой момент может возникнуть аварийная ситуация, которая приведёт к частичному или даже полному разрушению базы данных. Для организации-владельца данных последствия таких аварий могут быть
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.