Транзакции Транзакция - это последовательность операций, производимых над базой данных и переводящих базу данных из одного непротиворечивого (согласованного)

Презентация:



Advertisements
Похожие презентации
Модели транзакций Свойства транзакций. Способы завершения транзакций.
Advertisements

Лекция 25 Лекция 25 Понятие целостности базы данных. Условия целостности. Транзакции. Обработка транзакций. Свойства транзакций. Модель ANSI/ISO. Назначение.
Модели транзакций Журнализация и буферизация. Зачем нужна буферизация Если бы запись об изменении базы данных, которая должна поступить в журнал при выполнении.
Модели транзакций Уровни изолированности пользователей.
ACID – свойства транзакций 1.Атомарность 2.Согласованность 3.Изолированность 4.Долговечность create table AccountInfo(Name varchar2(100), Account number(10));
Обобщенная архитектура СУБД. Область SQL содержит данные связывания, временные буферы, дерево разбора и план выполнения для каждого оператора SQL, Область.
Учебная дисциплина «Базы данных и управление ими» для студентов специальности «Профессиональное обучение» Лекция 10 ОРГАНИЗАЦИЯ ПАРАЛЛЕЛЬНОГО.
Введение. Цели и задачи. Основные понятия и определения. Требования к базам данных.
Модели транзакций Параллельное выполнение транзакций.
Защита данных в базах данных: обеспечение целостности и безопасности данных "Стыдно не уметь защищать себя рукою, но ещё более стыдно не уметь защищать.
Лекция 26 Лекция 26 Параллельное выполнение транзакций. Типы конфликтов. Захваты и блокировки.
БАЗЫ ДАННЫХ часть II Распределенные и параллельные системы управления базами данных.
3 Обработка транзакций в реальном масштабе времени (OLTP - технология)
Транзакции Транзакция (transaction) – набор логически связанных действий, выполняемых как единая операция Транзакция – это логическая единица работы.
Выполнила студентка группы ТУ-501 Полозова Ю.О. База данных (БД) представляет собой совокупность структурированных данных, хранимых в памяти вычислительной.
Основные виды ресурсов и возможности их разделения.
Загрузка ПО Энциклопедия учителя информатики Газета «Первое сентября»
Урок 6. Восстановление баз данных. Обзор Процесс регенерации на сервере SQL Server Подготовка к восстановлению базы данных Восстановление резервных копий.
Лекция 3. Исключения и прерывания в встроенных системах.
Администрирование информационных систем Администрирование баз данных Восстановление данных.
Транксрипт:

Транзакции

Транзакция - это последовательность операций, производимых над базой данных и переводящих базу данных из одного непротиворечивого (согласованного) состояния в другое непротиворечивое (согласованное) состояние.

Транзакция некоторое неделимое действие над базой данных, осмысленное с точки зрения пользователя логическая единица работы системы

Свойства транзакций Свойство атомарности (Atomicity) Свойство согласованности (Consistency) Свойство изолированности (Isolation) Свойство долговечности (Durability)

Свойства транзакций Свойство атомарности (Atomicity) выражается в том, что транзакция должна быть выполнена в целом или не выполнена вовсе. Свойство согласованности (Consistency) гарантирует, что по мере выполнения транзакций данные переходят из одного согласованного состояния в другое транзакция не разрушает взаимной согласованности данных. Свойство изолированности (Isolation) означает, что конкурирующие за доступ к базе данных транзакции физически обрабатываются последовательно, изолированно друг от друга, но для пользователей это выглядит так, как будто они выполняются параллельно. Свойство долговечности (Durability) трактуется следующим образом: если транзакция завершена успешно, то те изменения в данных, которые были ею произведены, не могут быть потеряны ни при каких обстоятельствах (даже в случае последующих ошибок).

Atomicity Каждая транзакция представляет собой единицу работы. Она не может быть разбита на меньшие части. Выполняются либо все изменения данных, определенные в данной транзакции, либо не выполняется ни одно из них.

Consistency Свойство согласованности гарантирует, что по мере выполнения транзакций данные переходят из одного согласованного состояния в другое транзакция не разрушает взаимной согласованности данных. Для поддержания согласованности данных в процессе транзакции применяются все правила, проверки, ограничения и триггеры.

Isolation Свойство изолированности означает, что конкурирующие за доступ к базе данных транзакции физически обрабатываются последовательно, изолированно друг от друга, но для пользователей это выглядит так, как будто они выполняются параллельно.

Durability Свойство долговечности трактуется следующим образом: если транзакция завершена успешно, то те изменения в данных, которые были ею произведены, не могут быть потеряны ни при каких обстоятельствах (даже в случае последующих ошибок).

Пример T1 Read (A); A:=A+1; Write (A). T2 Read (A); A:=A+1; Write (A).

Решение T1 Lock(A); Read (A); A:=A+1; Write (A); Unlock(A). T2 Lock(A); Read (A); A:=A+1; Write (A); Unlock(A).

Проблемы: Бесконечные ожидания Тупики Решения: Установить очередь, возможно с приоритетами Две фазы: установка и снятие блокировок Установить порядок Периодически проверять на тупики и рестарт

Виды блокировок Блокировка на чтение Rlock(A) Блокировка на запись Wlock(A) Снятие всех блокировок Unlock (A)

Варианты завершения транзакции Фиксация Откат транзакции

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

Фиксация транзакции До фиксации допустимо восстановление базы данных в то состояние, в котором она была на момент начала транзакции. Фиксация транзакции означает, что все результаты выполнения транзакции становятся постоянными. Они станут видимыми другим транзакциям только после того, как текущая транзакция будет зафиксирована. До этого момента все данные, затрагиваемые транзакцией, будут "видны" пользователю в состоянии на начало текущей транзакции.

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

Модель транзакций

Команды для управления транзакциями: BEGIN – начало транзакции; COMMIT – для сохранения изменений; ROLLBACK – для отмены изменений; SAVEPOINT – для установки особых точек возврата.

Модель транзакций 1.оператор COMMIT означает успешное завершение транзакции; его использование делает постоянными изменения, внесенные в базу данных в рамках текущей транзакции; 2.оператор ROLLBACK прерывает транзакцию, отменяя изменения, сделанные в базе данных в рамках этой транзакции; новая транзакция начинается непосредственно после использования ROLLBACK; 3.успешное завершение программы, в которой была инициирована текущая транзакция, означает успешное завершение транзакции (как будто был использован оператор COMMIT); 4.ошибочное завершение программы прерывает транзакцию (как будто был использован оператор ROLLBACK).

Журнал транзакций сохранение промежуточных состояний, подтверждение транзакции, отката транзакции

Общие принципы восстановления результаты зафиксированных транзакций должны быть сохранены в восстановленном состоянии базы данных; результаты незафиксированных транзакций должны отсутствовать в восстановленном состоянии базы данных.

Восстановление нужно, если: Индивидуальный откат транзакции. Этот откат должен быть применен в следующих случаях: – стандартной ситуацией отката транзакции является ее явное завершение оператором ROLLBACK; – аварийное завершение работы прикладной программы, которое логически эквивалентно выполнению оператора ROLLBACK, но физически имеет иной механизм выполнения; – принудительный откат транзакции в случае взаимной блокировки при параллельном выполнении транзакций. В подобном случае для выхода из тупика данная транзакция может быть выбрана в качестве "жертвы" и принудительно прекращено ее выполнение ядром СУБД. Восстановление после внезапной потери содержимого оперативной памяти (мягкий сбой): – при аварийном выключении электрического питания; – при возникновении неустранимого сбоя процессора и т. д. Потеря той части базы данных, которая к моменту сбоя содержалась в буферах оперативной памяти. Восстановление после поломки основного внешнего носителя базы данных (жесткий сбой). Основой восстановления является архивная копия и журнал изменений базы данных.

Альтернативные варианты ведения журнала транзакций: Протокол с отложенными обновлениями Протокол с немедленными обновлениями.

Журнала по принципу отложенных изменений : Когда транзакция Т1 начинается, в протокол заносится запись Для каждой изменяемой записи записывается новое значение:. ID_RECORD уникальный номер записи. Если все действия выполнены, то транзакция фиксируется и в протокол заносится. После того как транзакция фиксирована, записи протокола, относящиеся к T1, используются для внесения соответствующих изменений в БД.

Журнала по принципу отложенных изменений : Если происходит сбой, то СУБД просматривает протокол и выясняет, какие транзакции необходимо переделать. Транзакцию Т1 необходимо переделать, если протокол содержит обе записи и. Все новые значения измененных элементов данных содержатся в протоколе, и это требует повторного выполнения транзакции. Для этого используется системная процедура REDO(), которая заменяет все значения элементов данных на новые, просматривая протокол в прямом порядке. Если в протоколе не содержится команда фиксации транзакции COMMIT, то никаких действий проводить не требуется, а транзакция запускается заново.

Журнала по принципу немедленных изменений : Все изменения сразу заносятся в БД; В протокол заносятся не только новые, но и все старые значения изменяемых атрибутов:. При этом запись в журнал предшествует непосредственному выполнению операции над БД. Когда встречается команда, то все изменения оказываются уже внесенными в БД. При откате транзакции выполняется системная процедура UNDO(), которая возвращает все старые значения в отмененной транзакции, начиная с команды BEGIN TRANSACTION.

Журнала по принципу немедленных изменений : Если транзакция содержит команду начала транзакции, но не содержит команды фиксации с подтверждением ее выполнения, то выполняется последовательность действий как при откате транзакции, то есть восстанавливаются старые значения. Если сбой произошел после выполнения последней команды изменения БД, но до выполнения команды фиксации, то команда фиксации выполняется, а с БД никаких изменений не происходит. Работа происходит только на уровне протокола.

Блокировка таблиц LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE} [, tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}...]... UNLOCK TABLES

Блокировка таблиц READ - только читаем – можно сразу нескольким READ LOCAL – читаем и вставляем – также нескольким WRITE - читаем, изменяем, вставляем, удаляем – только одному LOW PRIORITY WRITE - читаем, изменяем, вставляем, удаляем – только одному, но пропускаем тех, кто только читает

Уровни изолированности SET TRANSACTION IZOLATION LEVEL [{SERIALIZABLE | REPEATABLE READ | READ COMMITED | READ UNCOMMITED}] [{READ WRITE | READ ONLY }] SERIALIZABLE REPEATABLE READ READ COMMITED READ UNCOMMITED READ WRITE READ ONLY

READ UNCOMMITTED Грязное чтение Не использует или не проверяет наличие блокировок при чтении данных. Следовательно, на этом уровне изоляции возможно чтение незафиксированных данных. Допустимы только операции чтения в транзакции, поэтому в этом случае нельзя установить операции READ WRITE

READ COMMITTED чтение зафиксированных данных Читает только зафиксированные данные и ожидает снятия монопольной блокировки другой транзакцией. Разделяемые блокировки, используемые для чтения данных, снимаются сразу после завершения операции чтения. Уровень изоляции по умолчанию. Транзакция не может обновлять строку, обновленную другой транзакцией.

REPEATABLE READ повторяющееся чтение Читает данные так же, как уровень READ COMMITTED, но удерживает разделяемую блокировку до окончания транзакции.

SERIALIZABLE упорядочиваемое чтение аналогично уровню REPEATABLE READ. Этот уровень блокирует не только вовлеченные данные, но и весь диапазон данных. Это не допускает вставки новых данных в диапазон, используемый в запросе, что могло бы привести к фантомному чтению