Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

  • Грязное чтение (dirty read). Допускается чтение незафиксированных ("грязных") данных. При этом нарушается как целостность данных, так и требования внешнего ключа, а требования уникальности игнорируются.
  • Неповторяемость при чтении (non-REPEATABLE READ). Это означает, что если строка читается в момент времени T1, а затем перечитывается в момент времени T2, то за этот период она может измениться. Строка может исчезнуть, может быть обновлена и так далее.
  • Чтение фантомов (phantom read). Это означает, что если выполнить запрос в момент времени T1, а затем выполнить его повторно в момент времени Т2, в базе данных могут появиться дополнительные строки, влияющие на результаты. От неповторяемости при чтении это явление отличается тем, что прочитанные данные не изменились, но критериям запроса стало удовлетворять больше данных, чем прежде.
    Вводится четыре уровня изолированности транзакций, характеризующихся степенью взаимовлияния нескольких транзакций, обрабатывающих одни и те же данные.

Image Added

Особенности реализации транзакций в Oracle и MS Sql Server

Общие операторы управления транзакциями.
  • COMMIT (COMMIT WORK). Оператор COMMIT завершает транзакцию и делает любые выполненные в ней изменения постоянными (продолжительными). В распределенных транзакциях используются расширения оператора COMMIT. Эти расширения позволяют пометить оператор COMMIT (точнее, пометить транзакцию), задав для него комментарий, а также принудительно зафиксировать сомнительную распределенную транзакцию.
  • ROLLBACK (ROLLBACK WORK). Простой оператор отката завершает транзакцию и отменяет все выполненные в ней и незафиксированные изменения. Для этого он читает информацию из сегментов отката и восстанавливает блоки данных в состояние, в котором они находились до начала транзакции.
  • SAVEPOINT. Оператор SAVEPOINT позволяет создать в транзакции "метку", или точку сохранения. В одной транзакции можно выполнять оператор SAVEPOINT несколько раз, устанавливая несколько точек сохранения.
  • ROLLBACK TO <точка сохранения>. Этот оператор используется совместно с представленным выше оператором SAVEPOINT. Транзакцию можно откатить до указанной точки сохранения, не отменяя все сделанные до нее изменения.
  • SET TRANSACTION. Этот оператор позволяет устанавливать атрибуты транзакции, такие как уровень изолированности и то, будет ли она использоваться только для чтения данных или для чтения и записи. Этот оператор также позволяет привязать транзакцию к определенному сегменту отката.

Oracle

  1. Неявные транзакции. Транзакция автоматически начитается или с начала сеанса или с момента окончания предыдущей транзакции.
  2. Типы транзакций - Read Write, Read Only. Транзакция Read Only эквивалентна при чтении уровню изолированности SERIALIZABLE. Такая транзакция видит только изменения, зафиксированные на момент ее начала, но в этом режиме не разрешена вставка, изменение и удаление данных (другие сеансы могут изменять данные, но транзакция только для чтения — нет).
  3. Уровни изолированности - Read Committed, Serializable
  4. Механизм многоверсионности. Основные характеристики
    1. Согласованность по чтению для запросов. Запросы выдают согласованные результаты на момент начала их выполнения. Изменяемые данные помещаются в область сегмента отката.
    2. Неблокируемые запросы. Запросы, изменяющие данные, не блокируют запросы, читающие данные, и читающие запросы не блокируют изменяющие, как это бывает в других СУБД.
  5. Операторы управления транзакциями
    1. SET TRANSACTION
    2. COMMIT, ROLLBACK
    3. SAVEPOINT

MS Sql Server

  1. Явные транзакции. Каждый оператор выполняется в своей транзакции, если он не находится в блоке begin tran - commit (rollback)
  2. Наличие вложенных транзакций. Пример
    Блок кода
    sql
    sql
    
    begin tran
    ............
    	begin tran
    	.................
    	commit (rollback)
    ................
    commit (rollback)
    
    Подтверждение вложенной транзакции ни на что не влияет. Откат вложенной транзакции откатывает самую внешнюю транзакцию.
  3. Операторы управления транзакциями
    1. SET TRANSACTION
    2. BEGIN TRANSACTION
    3. COMMIT, ROLLBACK
    4. SAVEPOINT