Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Shpory_po_BD.doc
Скачиваний:
4
Добавлен:
22.09.2019
Размер:
1.37 Mб
Скачать

21.Транзакция. Св-во транзакции.

Транзакция - это запрос к базе данных, который представляет собой последовательность операторов языка SQL. Транзакция рассматривается как некоторое неделимое действие над базой данных и является логической единицей работы, выполняемой в базе данных. Она может быть представлена отдельной программой, являться частью алгоритма или даже отдельной командой и включать произвольное количество операций, выполняемых в базе данных.

Свойства:

1. Свойство атомарности означает, транзакция должна быть выполнена полностью или не выполнена совсем.

2. Свойство согласованности гарантирует, что по мере выполнения транзакции данные переходят из одного согласованного состояния в другое.

3. Свойство изолированности означает, что конкурирующие за доступ к базе данных транзакции физически обрабатываются последовательно, изолировано друг от друга.

4. Свойство долговечности означает, что если транзакция завершена успешно, то изменения в данных, которые были произведены транзакцией, не могут быть потеряны ни при каких обстоятельствах.

Возможны два варианта завершения транзакции:

  1. если все операторы, входящие в транзакцию, выполнены успешно и не произошло никаких сбоев программного или аппаратного обеспечения, то транзакция фиксируется. Фиксация транзакции - это операция записи на диск изменений в базе данных, которые были сделаны в процессе выполнения транзакции. Фиксация транзакции означает, что все результаты транзакции становятся постоянными и будут видны другим транзакциям (команда COMMIT).

  2. в случае каких-либо сбоев, которые делают невозможным нормальное завершение транзакции, база данных должна быть возвращена в исходное, целостное состояние. Для этого выполняется так называемый откат транзакции, т.е. аннулируются все изменения, сделанные незавершенной транзакцией (ROLLBACK).

Откат и фиксация транзакций возможны благодаря журналу транзакций. Операции над реляционной базой данных представляют собой операции над строками таблицы (записями файла). Поэтому для выполнения отката к предыдущему состоянию, необходимо хранить строки, в которые были внесены изменения. При выполнении любого оператора, который вносит изменения в базу данных, СУБД автоматически заносит в журнал транзакций соответствующую запись.Запись в журнале транзакций состоит из двух частей: состояние строки БД до внесения изменений и состояние строки после внесения изменений. Только после создания записи в журнале, СУБД вносит изменения в базу данных.

Если транзакция не была завершена успешно, СУБД просматривает журнал и отыскивает записи, показывающие состояние измененных строк до начала транзакции и восстанавливает те строки в файлах, которые были изменены.

22.Проблемы, возникающие при параллельном выполнении транз.

Одной из целей создания баз данных является организация параллельного доступа многих пользователей к общим данным, используемым ими совместно. Несколько пользователей получают возможность одновременно выполнять операции - благодаря механизму многопрограммности, позволяющей двум или больше программам (или транзакциям) выполняться в одно и же время. Программы по очереди используют общие ресурсы (процессор) и таким образом достигается их параллельное выполнение. Кроме того, общая производительность системы повышается. Однако, несмотря на то что каждая из транзакций сама по себе выполняется вполне корректно, чередование операций способно привести к неверным результатам, так как возможно взаимное влияние процессов друг на друга, способное привести к несогласованности данных. Выделяют три вида проблем, которые могут иметь место при параллельном выполнении транзакций.

1. Проблема потерянного обновления. Результаты успешно завершенной операции обновления одной транзакции могут быть перекрыты результатами выполнения другой транзакции. Избежать потери результатов выполнения транзакции Т2 можно, запретив транзакции Т1 считывать исходное значение вплоть до завершения выполнения транзакции Т2.

2. Проблема зависимости от нефиксированных результатов возникает в том случае, если одна из транзакций получает доступ к промежуточным результатам выполнения одной транзакции до того, как они будут зафиксированы в базе данных. Проблему можно устранить, запретив транзакции Т1 считывать значение счета до тех пор, пока транзакция Т2 не будет либо зафиксирована, либо отменена.

3. Проблема несогласованной обработки (чтение мусора или неповторяемость чтения). Транзакции, которые только считывают информацию из базы данных, также могут давать неверные результаты, если им будут доступны для чтения промежуточные результаты одновременно выполняющихся и еще не завершенных транзакций, обновляющих информацию в базе. Проблему можно устранить, запретив транзакции Т2 считывать значения на счетах С2 и С3 до тех пор, пока транзакция Т1 не зафиксирует выполненные ею обновления.

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