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

11

Лекция 6

2.3.2.Прозрачность транзакций

Транзакция является логической единицей работы, выполняемой в базе данных. Она может быть представлена отдельной программой, являться частью алгоритма программы или даже отдельной командой (например, командой INSERT или UPDATE языка SQL и включать произвольное количество операций, выполняемых в базе данных. С точки зрения базы данных, выполнение программы некоторого приложе­ния может расцениваться как серия транзакций, в промежутках между которыми выполняется некоторая обработка данных, осуществляемая вне среды базы данных. Любая транзакция всегда должна переводить базу данных из одного согласованного состояния в другое.

В языке SQL транзакция начинается оператором - BEGIN TRANSACTION и завершается одним из 2-х возможных способов:

  1. В случае успешного завершения результаты транзакции фиксируются в базе данных с помощью оператора СОММIТ и база данных переходит в новое согласованное состояние.

  2. Если выполнение транзакции не увенчалось успехом, то она отменяется с помощью оператора ROLLBACK .

Рассмотрим примеры для локальной и распределенной базы данных.

Для локальной базы данных:

Транзакция T1 – уменьшает исходную сумму со счёта balx на 100 рублей.

Время

Транзакция Т1

Поле balx

t1

begin_trans

1000

t2

read(balx)

1000

t3

balx=balx-100

1000

t4

write(balx)

900

t5

commit

900

Для многопользовательской базы данных транзакция Т2 – увеличивает исходную сумму счёта balx на 1000 руб.

Время

Транзакция Т1

Транзакция Т2

Поле balx

t1

begin_trans

1000

t2

read(balx)

1000

t3

balx=balx+1000

1000

t4

write(balx)

2000

t5

begin_trans

rollback

1000

t6

read(balx)

1000

t7

balx=balx-100

1000

t8

write(balx)

900

t9

commit

900

Т1 и Т2-это параллельные транзакции.

Если бы транзакция Т1 была включена в момент времени t3, то была бы считана сумма balx = 2000 в момент времени t4 и отмена транзакции Т2 в момент времени t5 не была бы зафиксирована транзакцией Т1. Поэтому Т1 начинается в момент времени t5.

Разработаны методы, которые обеспечивают поддержание базы данных в достоверном и согласованном состоянии. Для этого в любых современных СУБД реализованы три функции:

  1. Механизмы поддержания транзакций;

  2. Службы управления параллельностью( для многопользовательского режима);

  3. Средства восстановления баз данных.

Прозрачность транзакций в среде распределенных СУБД означает, что при вы­полнении любых распределенных транзакций гарантируется сохранение целостности и согласованности распределенной базы данных. Распределенная транзакция осуще­ствляет доступ к данным, сохраняемым более чем в одном местоположении, Каждая из транзакции разделяется на несколько субтранзакций — по одной для каждого к данным которого осуществляется доступ, На удаленных узлах транзак­ции представляются агентами.

Пример распределенной транзакции

Рассмотрим выполнение транзакции Т, выполняющей распечатку имен всего пер­сонала компании, при использовании схемы фрагментации, определенной раннее в виде фрагментов S1, S2, S21, S22 и S23. Транзакция будет включать три субтранзак­ции TS3, TS5 и TS7, представленные агентами 3,5 и 7 соответственно. Ка­ждая из субтранзакций печатает имена работников локального отделения компании. График распределенной транзакции показан в таблице. Обратите внимание на естественную параллельность, свойственную системе, - каждая из субтранзакций выполняется параллельно с остальными.

Время

Транзакция Тs3

Транзакция Тs5

Транзакция Тs7

t1

begin_transaction

begin_transaction

begin_transaction

t2

read(fname,lname)

read(fname,lname)

read(fname,lname)

t3

print(fname,lname)

print(fname,lname)

print(fname,lname)

t4

end_transaction

end_transaction

end_transaction



Неделимость остаётся фундаментальной концепцией понятия транзакции и в слу­чае распределенных транзакций, однако дополнительно РСУБД должна гарантиро­вать неделимость и каждой из ее субтранзакций . Следовательно, РСУБД должна гарантировать не только синхронизацию субтранзакций с другими локальными транзакциями, выполняющимися параллельно с ними , но и обеспечить синхронизацию субтранзакций с глобальными транзакциями, вы- полняющимися одновременно с ними на этом и других узлах системы, Прозрач­ность транзакций в распределенных СУБД дополнительно усложняется за счет нали­чия фрагментации, распределения данных и использования репликации, Мы рас­смотрим два дополнительных аспекта прозрачности транзакций, таких как прозрачность параллельности и прозрачность отказов.

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