Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Завершение транзакции

Читайте также:
  1. IV. Завершение сделки
  2. Вашингтонская конференция 1921-22 гг. Завершение форм-ия В-В сист. МО.
  3. Завершение медитации о карме: сосредоточение на выводах
  4. Завершение поста происходит в тот день, когда все люди завершают пост, а день жертвоприношения проводится, когда все люди приносят жертву».
  5. Завершение процедуры установки
  6. ЗАВЕРШЕНИЕ ПРОЦЕССА ИНВОЛЮЦИИ
  7. Завершение Пути

P1 (Грязное Чтение) (Dirty Read)

Транзакция T1 модифицировала содержимое элемента данных. После этого другая транзакция T2 прочитала содержимое этого элемента данных, до того как транзакция T1 выполнила операцию COMMIT (зафиксировалась) или ROLLBACK (откатилась). Если T1 завершается операцией ROLLBACK, то получается, что транзакция T2 прочитала реально не существующие данные.

P2 (Неповторимое или Размытое Чтение) (Non-repeatable or Fuzzy Read)

Транзакция T1 прочитала содержимое элемента данных. После этого другая транзакция T2 модифицирует или удаляет этот элемент данных и фиксируется. Если T1 после этого попытается прочитать содержимое этого элемента данных снова, то она получит другое значение или обнаружит, что элемент данных больше не существует.

P3 (Фантом) (Phantom):

Транзакция T1 прочитала содержимое нескольких элементов данных, удовлетворяющих некоторому предикату <search condition>. После этого транзакция T2 создает элемент данных, удовлетворяющий этому предикату, и фиксируется. Если транзакция T1 повторит чтение с тем же предикатом <search condition>, то получит уже другой набор данных, отличный от полученного в первый раз.

Ни один из этих феноменов не может произойти в последовательной истории. Поэтому, по теореме о сериализуемости, они не могут произойти и в сериализуемой истории

 

Если приводить в соответствие стандартные уровни изолированности и транзакции IB, то окажется что совпадает только один - Read Committed.

Dirty Read и Serialized отсутствуют, а SNAPSHOT близок к стандартному Repeatable Read, хотя и "сильнее" его.

 

Для управления транзакциями имеется три выражения:

SET TRANSACTION - Начинает транзакцию и определяет ее поведение.

COMMIT - Сохраняет изменения, внесенные транзакцией, в базе данных и завершает транзакцию.

ROLLBACK -Отменяет изменения, внесенные транзакцией, и завершает транзакцию.

В общем виде, синтаксис команды SQL для запуска транзакции:

SET TRANSACTION

[Access mode]

[Lock Resolution]

[Isolation Level]

[Table Reservation]

 

SET TRANSACTION [ READ WRITE | READ ONLY] [ WAIT | NO WAIT] [[ISOLATION LEVEL] { SNAPSHOT [TABLE STABILITY] | READ COMMITTED [[NO] RECORD_VERSION]}] [RESERVING <reserving_clause>]; <reserving_clause> = table [, table …] [FOR [SHARED | PROTECTED] {READ | WRITE}] [, <reserving_clause>].

 

 

Access Mode - определяет тип доступа к данным (могут или не могут операторы внутри транзакции модифицировать данные). По умолчанию READ WRITE, т.е. допускается и чтение и запись.

Может принимать два значения:

Пример:

SET TRANSACTION READ WRITE

Lock Resolution - определяет ход событий при обнаружении конфликта блокировки. Может принимать два значения:

Если транзакция стартует в режиме WAIT (по умолчанию), и при выполнении операции (как правило, изменения данных, за исключением режима no_rec_version) обнаруживается конфликт, то операция "замораживается" до разрешения конфликта.

Isolation Level - определяет порядок взаимодействия данной транзакции с другими в данной базе. Может принимать значения:

o READ COMMITTED - позволяет транзакции видеть текущее состояние базы. Т.е. все изменения, которые были подтверждены другими транзакциями, будут видны немедленно. Имеет две опции:

NO RECORD_VERSION (константа no_rec_version) - если при чтении пакета версий записи обнаруживается non-committed версия, то выдается или deadlock (в режиме no wait) или транзакция зависает на блокировке (в режиме wait). Используется по умолчанию для режима READ COMMITTED в IB API.

RECORD_VERSION (константа REC_VERSION) - игнорирует non-committed версии, читая последнюю committed-версию (см. выше no_rec_version). Именно этот режим является умолчательным в BDE (начиная с версии BDE 4.01.), и рекомендуется для нормальной работы в режиме read committed.

Table Reservation - позволяет транзакции получить гарантированный доступ необходимого уровня к указанным таблицам. Существует четыре уровня доступа:

 

Значения, принимаемые по-умолчанию:

выражение

SET TRANSACTION

равносильно выражению

SET TRANSACTION READ WRITE WAIT ISOLATION LEVEL SNAPSHOT

Завершение транзакции

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

·

 

      1. Управление транзакциями в Delphi

Прежде всего, транзакции в Delphi бывают явные и неявные.

Явная транзакция - это транзакция, начатая и завершенная с помощью методов объекта TIBTransaction: StartTransaction, Commit, RollBack. После начала явной транзакции, все изменения, вносимые в данные относятся к этой транзакции.

Неявная транзакция стартует при модификации данных, если в данный момент нет явной транзакции. Неявная транзакция возникает, например, при выполнении метода Post для объектов Table и Query. То есть, если Вы отредактировали запись, в DBGrid и переходите на другую запись, то это влечет за собой выполнение Post, что, в свою очередь, приводит к началу неявной транзакции, обновлению данных внутри транзакции и ее завершению. Важно отметить, что неявная транзакция, начатая с помощью методов Post, Delete, Insert, Append и т.д. заканчивается автоматически.

 


Дата добавления: 2015-10-26; просмотров: 187 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Характеристика типів темпераменту.| The Procedure of a Trial

mybiblioteka.su - 2015-2024 год. (0.007 сек.)