Автор работы: Пользователь скрыл имя, 20 Октября 2013 в 16:27, реферат
Целью данной работы является рассмотрение транзакций, определение, свойства, а также определение различий транзакций определенных в стандарте ANSI и конкретной реализации в сервере INterBase. Работа састоит из введения, двух глав, заключения и списка лиературы.
Первая глава посвещена общим сведениям о транзакциях описанным в стандарте ANSI SQL-92.
Вторая глава посвящена реализации SQL в InterBase.
Министерство образования и науки Российской Федерации
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
Кафедра информационных технологий в металлургии
РЕФЕРАТ
по дисциплине: «Базы данных»
на тему: «Транзакция»
ст. группы ИВТ-10
.
Проверил:
ст. преподаватель
Целью данной работы является рассмотрение транзакций, определение, свойства, а также определение различий транзакций определенных в стандарте ANSI и конкретной реализации в сервере INterBase. Работа састоит из введения, двух глав, заключения и списка лиературы.
Первая глава посвещена общим сведениям о транзакциях описанным в стандарте ANSI SQL-92.
Вторая глава посвящена реализации SQL в InterBase.
Транзакция это набор действий, которые должны быть успешно выполнены на одной или более таблицах в базе данных, прежде чем они будут подтверждены (committed). Если одно из действий в этом наборе потерпит неудачу, тогда все действия будут отменены (rolled back). Использование транзакций позволяет обеспечить, что база данных не окажется в неопределенном состоянии, когда возникнет проблема при завершении одного из действий, которые входят в состав транзакции.
Для более надежной и предсказуемой работы транзакций были сформированы наборы требований к транзакциям. Наиболее распространенным является набор ACID (Atomicity (неразрывность), Consistency (согласованность), Isolation (изолированность), Durability (устойчивость)):
Неразрывность утверждает, что изменение базы данных должно выполнятся по принципу “все или ничего”. Т.е. либо будут выполнены все операции, либо никакие из них.
Согласованность утверждает, что только достоверные данные могут быть записаны в базу данных. Например, количество товаров в базе магазина не должно быть меньше 0. Если по каким либо причинам транзакция выполнилась, так что нарушились требования согласованности базы данных, то вся транзакция отменяется, и база данных будет восстановлена до состояния, удовлетворяющего этим требованиям. Если же это требование выполняется успешно, она переведет базу данных из одного состояния, которое согласуется с правилами, в другое состояние, которое также удовлетворяет правилам. Ответственность за обеспечение согласованности возлагается и на СУБД, и на разработчиков приложений.
Изолированность требует, что бы несколько транзакций выполняемых одновременно не влияли на выполнение друг друга.
Устойчивость гарантирует, что результаты успешно завершенной (зафиксированной) транзакции должны храниться в базе данных постоянно и не должны быть утеряны в результате последующих сбоев.
Свойство изолированности транзакций требует, что бы синхронные транзакции, не влияли на работу друг друга, этого можно добиться на практике при помощи сериализации транзакций, т.е. выполнять их по такому плану, когда результат совместного выполнения транзакций эквивалентен результату некоторого последовательного выполнения этих же транзакций. Но это значительно замедляет работу сервера, поэтому в стандарте ANSI были определены, так называемые, феномены - последовательности операций, обладающие аномальным (возможно, не сериализуемым) поведением. Это позволило реализовать уровни изолированности транзакций, которые можно выбрать исходя из того какие феномены будут допустимы в базе данных. Всего в ANSI определенно 3 феномена:
Уровень изоляции транзакции определяет степень, в которой на операции этой транзакции влияют операции параллельно выполняющихся транзакций и в которой операции данной транзакции влияют на операции других транзакций. Каждый уровень изоляции определяет феномены возможные при параллельном выполнении транзакций. В стандарте ANSI SQL-92 определяются четыре уровня изолированности:
Блокировка диапазона устанавливается в диапазоне значений ключа, соответствующих условиям поиска любой инструкции, выполненной во время транзакции. Обновление и вставка строк, удовлетворяющих инструкциям текущей транзакции, блокируется для других транзакций. Это гарантирует, что если какая-либо инструкция транзакции выполняется повторно, она будет считывать тот же самый набор строк. Блокировки диапазона сохраняются до завершения транзакции. Это самый строгий уровень изоляции, поскольку он блокирует целые диапазоны ключей и сохраняет блокировку до завершения транзакции.
Возможность параллельного
выполнения конкурирующих транзакций
на различных уровнях
Таблица 1: Фантомы допускаемые на разных уровнях изолированности.
Уровень изоляции |
Грязное Чтение |
Размытое Чтение |
Фантом |
READ UNCOMMITTED |
Возможно |
Возможно |
Возможно |
READ COMMITTED |
Невозможно |
Возможно |
Возможно |
REPEATABLE READ |
Невозможно |
Невозможно |
Возможно |
SERIALIZABLE |
Невозможно |
Невозможно |
Невозможно |
Когда транзакция выполнила все действия, или ошибка препятствует ее завершению, транзакция должна быть закончена, что бы сохранить базу данных в согласованном состоянии. Существует 2 оператора, что бы завершить транзакции:
Стандарт определяет, что транзакция начинается с первого SQL-оператора, инициируемого пользователем или содержащегося в программе, изменяющего текущее состояние базы данных. Все последующие SQL-операторы составляют тело транзакции. Транзакция завершается одним из четырех возможных путей (рис. 1):
И ROLLBACK и COMMIT закрывают курсор и освобождают системные ресурсы связанные с транзакцией.
ROLLBACK часто используется внутри блока обработки ошибок, что бы откатить все изменения сделанные программой при возникновении ошибок.
Транзакции в InterBase мало чем отличаются, от транзакций определенных в стандарте ANSI.
Одним из различий является то, что в InterBase, помимо феноменов определенных в ANSI введены дополнительные:
“Потерянная Модификация” (Lost updates), которое происходит в случае, когда транзакция T1 прочитала элементы данных, после нее T2 их модифицировала после чего T1 (основываясь на ранее прочитанном ею значении) модифицирует содержимое элемента данных и фиксируется.
“Побочные эффекты обновления” (Update side effects), которое может произойти, когда значения строки взаимозависимы и их зависимости не достаточно защищены или используется блокировка триггером или ограничение целостности. Эти конфликты происходят, когда две или более одновременные транзакции в произвольном порядке и неоднократно получают доступ и обновляют те же данные; такие транзакции называют чередующими транзакциями.
Кроме того введены два не определенных в ANSI уровня изолированности:
“Моментальный срез” (SNAPSHOT) используется по умолчанию. Данные внутри транзакции будут доступны в том состоянии в котором они были на момент запуска транзакции. Другие синхронные транзакции, могут изменять и вставлять строки, но эта транзакция не увидет изменений. При попытке модифицировать такие записи возникнет сообщение о конфликте.
“Стабильный моментальный срез” (SNAPSHOT TABLE STABILITY): Это уровень изоляции также создает "моментальный" снимок базы данных, но одновременно блокирует на запись данные, задействованные в операциях, выполняемые данной транзакцией. Это означает, что если транзакция SNAPSHOT TABLE STABILITY изменила данные в какой-нибудь таблице, то после этого данные в этой таблице уже не могут быть изменены в других параллельных транзакциях. Кроме того, транзакции с уровнем изоляции SNAPSHOT TABLE STABILITY не могут получить доступ к таблице, если данные в них уже изменяются в контексте других транзакций.