Funnybluejeans
34

Самиздат: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Links
Кожевенное мастерство: сумки, ремни своими руками
 Ваша оценка:


 Транзакция - логическая единица работы в базе данных а так же единица восстановления информации при сбое СУБД.
 Особенности реализации транзакций:
 - Неявные транзакции. Транзакция автоматически начитается или с начала сеанса или с момента окончания предыдущей транзакции.
 - Типы транзакций - Read Write, Read Only. Транзакция Read Only эквивалентна при чтении уровню изолированности SERIALIZABLE. Такая транзакция видит только изменения, зафиксированные на момент ее начала, но в этом режиме не разрешена вставка, изменение и удаление данных (другие сеансы могут изменять данные, но транзакция только для чтения - нет).
 - Уровни изолированности - Read Committed, Serializable.
 - Механизм многоверсионности. Основные характеристики: 1. Согласованность по чтению для запросов (Запросы выдают согласованные результаты на момент начала их выполнения. Изменяемые данные помещаются в область сегмента отката). 2. Неблокируемые запросы (Запросы, изменяющие данные, не блокируют запросы, читающие данные, и читающие запросы не блокируют изменяющие, как это бывает в других СУБД).
 - Операторы управления транзакциями: SET TRANSACTION, COMMIT, ROLLBACK, SAVEPOINT.
 Оператор COMMIT завершает транзакцию и делает любые выполненные в ней изменения постоянными.
 ROLLBACK. Простой оператор отката завершает транзакцию и отменяет все выполненные в ней и незафиксированные изменения.
 Оператор SAVEPOINT позволяет создать в транзакции "метку", или точку сохранения.
 SET TRANSACTION. Позволяет устанавливать атрибуты транзакции, такие как уровень изолированности и то, будет ли она использоваться только для чтения данных или для чтения и записи.
 Автономные транзакции позволяют создать "транзакцию внутри транзакции", которая зафиксирует или выполнит откат изменений, независимо от родительской транзакции.
 Автономные транзакции предоставляют новый метод управления транзакциями в PL/SQL и могут быть использованы в следующих конструкциях:
 - Анонимные блоки верхнего уровня.
 - Локальные (процедура в процедуре).
 - Методы объектных типов.
 - Триггеры баз данных.
 Пример.
 tkyte@TKYTE816> create table t (msg varchar2(25));
 Table created.
 tkyte@TKYTE816> create or replace procedure Autonomous_Insert
 2 as
 3 pragma autonomous_transaction;
 4 begin
 5 insert into t values ('Autonomous Insert');
 6 commit;
 7 end;
 8 /
 Procedure created.
 tkyte@TKYTE816> create or replace procedure NonAutonomous_Insert
 2 as
 3 begin
 4 insert into t values ('NonAutonomous Insert');
 5 commit;
 6 end;
 7 /
 Procedure created.
 Процедуры вставляют свои имена в таблицу сообщений и фиксируют результат. PRAGMA AUTONOMOUS_TRANSACTION - указывает, что процедура выполнятся как новая автономная транзакция, независимо от родительской. Рассмотрим поведение обычной транзакции в анонимном блоке PL/SQL:
 tkyte@TKYTE816> begin
 2 insert into t values ('Anonymous Block');
 3 NonAutonomous_Insert;
 4 rollback;
 5 end;
 6 /
 PL/SQL procedure successfully completed.
 tkyte@TKYTE816> select * from t;
 MSG
 Anonymous Block
 NonAutonomous Insert
 Изменения, выполненные анонимным блоком (вставка строки), были зафиксированы процедурой NonAutonomous_Insert. Зафиксированы обе строки данных, и оператору rollback оказалось нечего откатывать. Сравним это с поведением хп, оформленной как автономная транзакция:
 tkyte@TKYTE816> delete from t;
 2 rows deleted.
 tkyte@TKYTE816> commit;
 Commit complete.
 tkyte@TKYTE816> begin
 2 insert into t values ('Anonymous Block');
 3 Autonomous_Insert;
 4 rollback;
 5 end;
 6 /
 PL/SQL procedure successfully completed.
 tkyte@TKYTE816> select * from t;
 MSG
 Autonomous Insert Остаются только изменения, выполненные и зафиксированные в автономной транзакции. Оператор INSERT, выполненный в анонимном блоке, откатывается оператором ROLLBACK в строке 4. Оператор COMMIT в процедуре - автономной транзакции не влияет на родительскую транзакцию, начатую в анонимном блоке. Этот простой пример показывает суть автономных транзакций.
 Ваша оценка:

Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души" М.Николаев "Вторжение на Землю"

Как попасть в этoт список

Кожевенное мастерство | Сайт "Художники" | Доска об'явлений "Книги"