Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Управление транзакциями на SQL-сервере InterBase

Установка уровня изоляции транзакций в Delphi.

Уровень изоляции транзакции Repeatable Read.

Чтение данных. Текущая транзакция всегда видит данные в том состоянии, в котором они находились на момент старта транзакции.

Пусть транзакция А открыла набор данных. После этого транзакция В внесла в те же данные изменения и не подтвердила их. Тогда при повторном открытии набора данных транзакция А получит данные в том состоянии, в котором они находились на момент ее старта. Однако "свои" изменения А видеть будет. Пусть транзакция В подтвердила сделанные ею изменения, а транзакция А вновь открыла набор данных. И в этом случае транзакция А получит данные в том состоянии, в котором они находились на момент ее старта.

Изменение данных. Пусть транзакция А внесла изменения в данные и не подтвердила их. Транзакция В после этого также внесла изменения в те же данные. Тогда попытка транзакции В подтвердить внесенные ею изменения будет отвергнута.

Уровень изоляции транзакций определяется свойством компонента TDatabase.

 

property Translsolation: TTranslsolation;

 

возможные значения: tiDirtyRead, tiReadCommitted, tiRepeatableRead.

Разные серверы БД различным образом интерпретируют уровни изоляции транзакций, установленные в свойстве Translsolation (таблица 14.1).

Таблица 14.1.

Сервер Уровень транзакции Интерпретируется как
Oracle tiDirtyRead tiReadCommitted tiRepeatableRead tiReadCommitted tiReadCommitted tiRepeatableRead (Только для чтения)
Sybase, MS-SQL tiDirtyRead tiReadCommitted tiRepeatableRead tiReadCommitted tiReadCommitted He поддерживается
DB2 tiDirtyRead tiReadCommitted tiRepeatableRead tiDirtyRead tiReadCommitted tiRepeatableRead
Informix tiDirtyRead tiReadCommitted tiRepeatableRead tiDirtyRead tiReadCommitted tiRepeatableRead
InterBase tiDirtyRead tiReadCommitted tiRepeatableRead tiReadCommitted tiReadCommitted tiRepeatableRead
Paradox, dBASE tiDirtyRead tiReadCommitted tiRepeatableRead tiDirtyRead Не поддерживается Не поддерживается

InterBase управляет транзакциями при помощи SQL-операторов SET TRANSACTION (начать транзакцию), COMMIT (подтвердить транзакцию) и ROLLBACK, (откатить транзакцию).

Оператор SET TRANSACTION имеет формат

 

SET TRANSACTION [READ WRITE | READ ONLY]

[WAIT | NO WAIT]

[[ISOLATION LEVEL] {SNAPSHOT [TABLE STABILITY]

| READ COMMITTED [[NO] RECORD_VERSION]}]

[RESERVING <список_таблиц> [FOR [SHARKD | PROTECTED] [READ | WRITE]], [<список_таблиц>...];

 

где

READ WRITE \ READ ONLY устанавливает уровень доступа к данным (по умолчанию READ WRITE);

WAIT | NO WAIT определяет поведение при возникновении конфликта по обновлению записи данной транзакции с другой транзакцией, ранее сделавшей изменение в той же записи: WAIT (по умолчанию) побуждает данную транзакцию ожидать завершения конкурирующей транзакции; NO WAIT определяет аварийное завершение данной транзакции;

ISOLATION LEVEL определяет уровни изоляции транзакций на сервере (по умолчанию SNAPSHOT);

RESERVING в рамках данной транзакции запирает (lock) таблицы, приведенные в одном или нескольких списках таблиц.

В последнем случае каждому элементу списка таблиц ставятся в соответствие параметры:

PROTECTED READ - конкурирующие транзакции могут читать данные, но не могут изменять;

PROTECTED WRITE - читать данные могут только транзакции с уровнями SNAPSHOT или READ COMMITTED и никакая конкурирующая транзакция не может их изменять.

Стандарт ISO включает определение модели транзакций, построенной на использовании двух специальных операторов — COMMIT и ROLLBACK. Большинство коммерческих реализаций языка SQL, в том числе и InterBase, поддерживает эту модель, которая впервые была реализована в СУБД DB2 компании IBM. В стандарте указывается, что в языке SQL транзакция автоматически запускается любым, инициализирующим транзакцию SQL-оператором, выполняемым пользователем, или программой (например, SELECT, INSERT или UPDATE). Изменения, внесенные в базу данных в ходе выполнения данной транзакции, не будут видны любым другим выполняющимся параллельно транзакциям до тех пор, пока эта транзакция не будет явным образом завершена. Завершение транзакции может быть выполнено одним из следующих четырех способов.

· Ввод оператора COMMIT означает успешное завершение транзакции. После его выполнения внесенные в базу данных изменения приобретают постоянный характер. После обработки оператора COMМIT ввод любого инициирующего транзакцию оператора автоматически вызовет запуск новой транзакции.

· Ввод оператора ROLLBACK означает отказ от завершения транзакции, в результате чего выполняется откат всех изменений в базе данных, внесенных при выполнении этой транзакции. После обработки оператора ROLLBACK ввод любого инициирующего транзакцию оператора автоматически вызовет запуск новой транзакции.

· При внедрении SQL-операторов в текст программы успешное окончание ее работы автоматически вызовет завершение последней запущенной программой транзакции, даже если оператор COMMIT для нее не был введен явно.

· При внедрении SQL-операторов в текст программы аварийное окончание ее работы автоматически вызовет отказ последней запущенной этой программой транзакции.

 

КОНТРОЛЬНЫЕ ВОПРОСЫ:

1. Как называются механизмы отката изменений в БД в случае невыполнения условия успешного завершения всех операций в составе группы?

2. Что такое транзакция?

3. Чем может быть представлена транзакция в БД?

4. Какие операторы используются для указания границ отдельных транзакций в InterBase?

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

6. Что определяет уровень изоляции транзакции?

7. Каким способом может быть выполнено завершение транзакции?

<== предыдущая лекция | следующая лекция ==>
Уровень изоляции транзакции Read Committed | Проблемы защиты базы данных
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 418; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.