Учебное пособие Для студентов университетов Специальностей «Информатика», «Прикладная математика»



Pdf көрінісі
бет50/177
Дата15.02.2022
өлшемі2,58 Mb.
#25567
түріУчебное пособие
1   ...   46   47   48   49   50   51   52   53   ...   177
 
7. УПРАВЛЕНИЕ ТРАНЗАКЦИЯМИ 
7.1. СВОЙСТВА ТРАНЗАКЦИЙ. ПРОБЛЕМЫ ПАРАЛЛЕЛЬНОГО ВЫПОЛНЕНИЯ 
Транзакция 
– это действие или серия действий, которые осуществля-
ют доступ или изменение содержимого базы данных и рассматриваются 
СУБД  как  единое  целое.  Транзакция  является  логической  единицей  ра-
боты, выполняемой в БД. Она может быть представлена отдельной про-
граммой, являться частью алгоритма программы или даже отдельной ко-
мандой (например, командой INSERT или UPDATE) и включать произ-
вольное количество операций, выполняемых в данных.  
Любая  транзакция  всегда  должна  переводить  БД  из  одного  согласо-
ванного  состояния  в  другое,  хотя  допускается,  что  согласованность  со-
 
65


 
стояния  базы  будет  нарушаться  в  ходе  выполнения  транзакции.  Любая 
транзакция  завершается  одним  из  двух  возможных  способов.  В  случае 
успешного завершения результаты транзакции фиксируются (COMMIT) 
в БД, и последняя переходит в новое согласованное состояние. Если вы-
полнение  транзакции  не  увенчалось  успехом,  она  отменяется.  В  этом 
случае  в  базе  данных  должно  быть  восстановлено  то  согласованное  со-
стояние,  в  котором  она  находилась  до  начала  данной  транзакции.  Этот 
процесс  называется  откатом (ROLLBACK) транзакции.  Реализация  в 
СУБД принципа сохранения промежуточных состояний, подтверждения 
или  отката  транзакций  обеспечивается  специальным  механизмом,  для 
поддержки которого создается некоторая системная структура, называе-
мая журналом транзакций. Зафиксированная транзакция не может быть 
отменена.  
В  большинстве  языков  манипулирования  данными  для  указания  гра-
ниц 
отдельных 
транзакций 
используются 
операторы BEGIN 
TRANSACTION, COMMIT и ROLLBACK (или  их  эквиваленты).  Если 
эти  ограничители  не  были  использованы,  вся  выполняемая  программа 
расценивается  как  единая  транзакция.  СУБД  автоматически  выполнит 
команду COMMIT при нормальном завершении этой программы. Анало-
гично, в случае ее аварийного завершения в БД автоматически будет вы-
полнена команда ROLLBACK. 
Существуют  некоторые  свойства,  которыми  должна  обладать  любая 
из транзакций.  
1.  Атомарность.  Это  свойство  типа  «все  или  ничего».  Любая  тран-
закция  представляет  собой  неделимую  единицу  работы,  которая  может 
быть либо выполнена вся целиком, либо не выполнена вовсе. 
2. Согласованность. Каждая транзакция должна переводить базу дан-
ных из одного согласованного состояния в другое согласованное состоя-
ние. 
3. Изолированность. Все транзакции выполняются независимо одна от 
другой. Иначе говоря, промежуточные результаты незавершенной тран-
закции не должны быть доступны другим транзакциям. 
4.  Долговечность.  Результаты  успешно  завершенной  (зафиксирован-
ной)  транзакции  должны  сохраняться  в  базе  данных  постоянно  и  не 
должны быть утеряны в результате последующих сбоев. 
Важнейшей  целью  создания  баз  данных  является  организация  парал-
лельного доступа многих пользователей к общим данным, используемым 
ими совместно. Обеспечить параллельный доступ относительно неслож-
но, если все пользователи только читают данные, помещенные в базу. В 
этом случае работа каждого из них не оказывает никакого влияния на ра-
 
66


 
боту остальных пользователей. Однако если два или больше пользовате-
ля одновременно обращаются к БД и хотя бы один из них имеет целью 
обновить  хранимую  в  базе  информацию,  возможно  взаимное  влияние 
процессов  друг  на  друга,  способное  привести  к  несогласованности  дан-
ных. 
Рассмотрим  три  потенциальные  проблемы,  которые  могут  иметь  ме-
сто  при  параллельном  выполнении  транзакций:  проблему  потерянного 
обновления,  проблему  зависимости  от  нефиксированных  результатов  и 
проблему  несогласованной  обработки.  Если  обозначить  операции  чте-
ния,  записи  новых  значений  и  откат  транзакции  над  БД  соответственно 
как  RWO, то для первой транзакции это могут быть операции R
1
W
1

O
1
,  а  для  параллельно  выполняющейся  второй  транзакции  операции  R
2

W
2
O
2

Проблема потерянного обновления возникает, когда результаты впол-
не успешно завершенной операции обновления одной транзакции могут 
быть перекрыты результатами выполнения другой транзакции. Эта про-
блема  может  возникнуть  в  результате  выполнения  последовательности 
операций R
1
R
2
W
2
W
1

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

В  обоих  приведенных  выше  примерах  речь  шла  о  транзакциях,  вы-
полняющих  обновление  данных  в  базе,  наличие  взаимовлияния  между 
которыми  и  вызывало  разрушение  базы.  Однако  транзакции,  которые 
только считывают информацию из БД, также могут давать неверные ре-
зультаты, если им будут доступны для чтения промежуточные результа-
ты  одновременно  выполняющихся  и  еще  не  завершенных  транзакций, 
обновляющих информацию в базе. Возникает проблема несогласованной 
обработки. В некоторых случаях ее называют чтением мусора или непо-
вторяемостью  чтения.  Проблема  может  возникнуть  в  результате  вы-
полнения последовательности операторов R
1
R
2
W
1
R
2
. В данном случае 
второе R
2
 означает считывание следующей порции данных. 
С управлением параллельностью или транзакциями в многопользова-
тельской СУБД связаны важные понятия сериализации транзакций и се-
риального  плана  выполнения  смеси  транзакций.  Под  сериализацией  па-
раллельно  выполняющихся  транзакций  понимается  такой  порядок  пла-
нирования их работы, при котором суммарный эффект смеси транзакций 
эквивалентен  эффекту  их  некоторого  последовательного  выполнения. 
 
67


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


Достарыңызбен бөлісу:
1   ...   46   47   48   49   50   51   52   53   ...   177




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет