Системы обработки информации - язык баз данных SQL

       

Транзакции


Транзакция есть последовательность операций, включающая операции над базой данных, атомарная по отношению к восстановлению и асинхронности. Транзакция начинается, когда вызывается процедура и никакая транзакция в данный момент не активна. Транзакция заканчивается при выполнении <оператора фиксации> (<commit statement>) или <оператора отката> (<rollback statement>). Если транзакция завершается выполнением <оператора фиксации> (<commit statement>), все изменения, внесенные в базу данных этой транзакцией делаются доступными для всех асинхронно выполняемых транзакций. Если транзакция завершается выполнением <оператора отката> (<rollback statement>), все изменения, внесенные в базу данных этой транзакцией, аннулируются. Зафиксированные изменения не могут быть аннулированы. Изменения, внесенные в базу данных транзакцией, могут восприниматься этой транзакцией, но до тех пор, пока транзакция не завершится выполнением <оператора фиксации> (<commit statement>), они не могут восприниматься другими транзакциями.

Гарантируется сериализуемость выполнения асинхронных транзакций. Сериализуемое выполнение определяется как выполнение операций асинхронно выполняемых транзакций, которое производит то же самое действие, что и некоторое последовательное выполнение тех же самых транзакций. Последовательное выполнение - это такое выполнение, при котором каждая транзакция полностью завершается перед началом выполнения следующей транзакции.

Выполнение <оператора SQL> (<SQL statement>) внутри транзакции не оказывает никаких воздействий на базу данных кроме тех, которые установлены Общими правилами для этого <оператора SQL> (<SQL statement>).

Из этого совместно с гарантированным сериализуемым выполнением транзакций следует воспроизводимость всех операций чтения внутри транзакции, если не учитывать следующего:

  • Влияния изменений базы данных и ее содержимого, явно производимых самой транзакцией.
  • Влияния изменений значений параметров, поставляемых процедурам, которые открывают курсоры, на последующие выборки через эти курсоры.
  • |



    Содержание раздела