🗊Презентация Транзакции

Категория: Информатика
Нажмите для полного просмотра!
Транзакции, слайд №1Транзакции, слайд №2Транзакции, слайд №3Транзакции, слайд №4Транзакции, слайд №5Транзакции, слайд №6Транзакции, слайд №7Транзакции, слайд №8Транзакции, слайд №9Транзакции, слайд №10Транзакции, слайд №11Транзакции, слайд №12Транзакции, слайд №13Транзакции, слайд №14Транзакции, слайд №15Транзакции, слайд №16Транзакции, слайд №17Транзакции, слайд №18Транзакции, слайд №19Транзакции, слайд №20Транзакции, слайд №21Транзакции, слайд №22Транзакции, слайд №23Транзакции, слайд №24Транзакции, слайд №25Транзакции, слайд №26Транзакции, слайд №27Транзакции, слайд №28Транзакции, слайд №29Транзакции, слайд №30Транзакции, слайд №31Транзакции, слайд №32Транзакции, слайд №33Транзакции, слайд №34Транзакции, слайд №35Транзакции, слайд №36Транзакции, слайд №37Транзакции, слайд №38Транзакции, слайд №39Транзакции, слайд №40Транзакции, слайд №41Транзакции, слайд №42Транзакции, слайд №43Транзакции, слайд №44Транзакции, слайд №45Транзакции, слайд №46Транзакции, слайд №47Транзакции, слайд №48Транзакции, слайд №49Транзакции, слайд №50Транзакции, слайд №51Транзакции, слайд №52Транзакции, слайд №53Транзакции, слайд №54Транзакции, слайд №55Транзакции, слайд №56Транзакции, слайд №57Транзакции, слайд №58Транзакции, слайд №59Транзакции, слайд №60Транзакции, слайд №61Транзакции, слайд №62Транзакции, слайд №63Транзакции, слайд №64Транзакции, слайд №65Транзакции, слайд №66Транзакции, слайд №67Транзакции, слайд №68Транзакции, слайд №69Транзакции, слайд №70Транзакции, слайд №71Транзакции, слайд №72Транзакции, слайд №73Транзакции, слайд №74Транзакции, слайд №75Транзакции, слайд №76Транзакции, слайд №77Транзакции, слайд №78Транзакции, слайд №79Транзакции, слайд №80Транзакции, слайд №81Транзакции, слайд №82Транзакции, слайд №83Транзакции, слайд №84Транзакции, слайд №85Транзакции, слайд №86Транзакции, слайд №87Транзакции, слайд №88Транзакции, слайд №89Транзакции, слайд №90Транзакции, слайд №91Транзакции, слайд №92Транзакции, слайд №93Транзакции, слайд №94Транзакции, слайд №95Транзакции, слайд №96Транзакции, слайд №97Транзакции, слайд №98Транзакции, слайд №99Транзакции, слайд №100Транзакции, слайд №101Транзакции, слайд №102Транзакции, слайд №103Транзакции, слайд №104Транзакции, слайд №105Транзакции, слайд №106Транзакции, слайд №107Транзакции, слайд №108Транзакции, слайд №109Транзакции, слайд №110

Содержание

Вы можете ознакомиться и скачать презентацию на тему Транзакции. Доклад-сообщение содержит 110 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Транзакции
Описание слайда:
Транзакции

Слайд 2





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

Слайд 3





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

Слайд 4





Транзакция- требования ACID
Atomicity — Атомарность
Consistency — Согласованность
Isolation — Изолированность
Durability — Надежность
Описание слайда:
Транзакция- требования ACID Atomicity — Атомарность Consistency — Согласованность Isolation — Изолированность Durability — Надежность

Слайд 5





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

Слайд 6





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

Слайд 7





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

Слайд 8





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

Слайд 9





Согласованность в базах данных
 База данных находится в согласованном состоянии, если для этого состояния выполнены все ограничения целостности.
Ограничение целостности - это некоторое утверждение, которое может быть истинным или ложным в зависимости от состояния базы данных.
Конкурентное использование ресурсов корректными программами может привести к некорректным результатам
Описание слайда:
Согласованность в базах данных  База данных находится в согласованном состоянии, если для этого состояния выполнены все ограничения целостности. Ограничение целостности - это некоторое утверждение, которое может быть истинным или ложным в зависимости от состояния базы данных. Конкурентное использование ресурсов корректными программами может привести к некорректным результатам

Слайд 10





Согласованность
Отказы при выполнении программ-клиентов, СУБД, операционной системы и оборудования могут привести к нарушениям согласованности
 Функция СУБД –гарантировать согласованность при конкурентном выполнении и восстановление согласованности после всех видов отказов
Описание слайда:
Согласованность Отказы при выполнении программ-клиентов, СУБД, операционной системы и оборудования могут привести к нарушениям согласованности  Функция СУБД –гарантировать согласованность при конкурентном выполнении и восстановление согласованности после всех видов отказов

Слайд 11





Пример 1
обрыв транзакции
T1
Описание слайда:
Пример 1 обрыв транзакции T1

Слайд 12





Пример 2 
конкурирующие транзакции
T1
Описание слайда:
Пример 2 конкурирующие транзакции T1

Слайд 13





Пример 3 
конкурирующие транзакции
T1
Описание слайда:
Пример 3 конкурирующие транзакции T1

Слайд 14





Транзакции, истории и расписания
База данных: x, y, z, …
Операции: r(x), w(x)
Транзакции: конечная последовательность операций
–r1(x)r1(y) w1(z)
История: упорядоченная совокупность операций нескольких транзакций
–r1(x)r2(x)w1(x) w2(x)с1 с2
Расписание: префикс истории
Описание слайда:
Транзакции, истории и расписания База данных: x, y, z, … Операции: r(x), w(x) Транзакции: конечная последовательность операций –r1(x)r1(y) w1(z) История: упорядоченная совокупность операций нескольких транзакций –r1(x)r2(x)w1(x) w2(x)с1 с2 Расписание: префикс истории

Слайд 15





Проблемы, вызванные конкурентностью выполнения
Потеря обновлений
–r1(x) r2(x) w1(x) w2(x)
Несогласованное чтение
–r1(x) r2(y) w2(y) r1(y)
Грязное чтение
–r1(x) w1(x) r2(x) w2(y) a1
Описание слайда:
Проблемы, вызванные конкурентностью выполнения Потеря обновлений –r1(x) r2(x) w1(x) w2(x) Несогласованное чтение –r1(x) r2(y) w2(y) r1(y) Грязное чтение –r1(x) w1(x) r2(x) w2(y) a1

Слайд 16





Серийное расписание

Расписание, в котором все операции любой транзакции либо предшествуют, либо следуют за операциями любой другой транзакции
Серийное расписание всегда корректно
Описание слайда:
Серийное расписание Расписание, в котором все операции любой транзакции либо предшествуют, либо следуют за операциями любой другой транзакции Серийное расписание всегда корректно

Слайд 17





Конфликты
Пара операций из расписания, такая, что
Операции принадлежат разным транзакциям
Работают с одним элементом данных
По крайней мере одна из двух –операция записи
Конфликты присутствуют в любом нетривиальном расписании
Описание слайда:
Конфликты Пара операций из расписания, такая, что Операции принадлежат разным транзакциям Работают с одним элементом данных По крайней мере одна из двух –операция записи Конфликты присутствуют в любом нетривиальном расписании

Слайд 18





Эквивалентность и серийность
Множество конфликтов расписания содержит пары, в которых первая операция предшествует второй (и пары находятся в конфликте)
Расписания эквивалентны, если их множества конфликтов совпадают
Расписание называется серийным, если оно эквивалентно по конфликтам серийному
Серийные расписания корректны
Описание слайда:
Эквивалентность и серийность Множество конфликтов расписания содержит пары, в которых первая операция предшествует второй (и пары находятся в конфликте) Расписания эквивалентны, если их множества конфликтов совпадают Расписание называется серийным, если оно эквивалентно по конфликтам серийному Серийные расписания корректны

Слайд 19





Критерий серийности
Граф конфликтов (граф серийности)
Вершины соответствуют транзакциям
Дуги проводятся для каждого конфликта в направлении конфликта
Расписание серийно по конфликтам тогда и только тогда, когда граф серийности не содержит контуров
Описание слайда:
Критерий серийности Граф конфликтов (граф серийности) Вершины соответствуют транзакциям Дуги проводятся для каждого конфликта в направлении конфликта Расписание серийно по конфликтам тогда и только тогда, когда граф серийности не содержит контуров

Слайд 20





План доказательства
Граф конфликтов серийного расписания не может иметь контуров, потому что транзакции упорядочены и все дуги направлены от начала к концу расписания
Если граф не имеет контуров, эквивалентное серийное расписание можно построить с помощью топологической сортировки графа
Описание слайда:
План доказательства Граф конфликтов серийного расписания не может иметь контуров, потому что транзакции упорядочены и все дуги направлены от начала к концу расписания Если граф не имеет контуров, эквивалентное серийное расписание можно построить с помощью топологической сортировки графа

Слайд 21





Сериализуемость по коммутативности
Любые операции чтения коммутируют
Любые операции над разными элементами коммутируют
Расписание сериализуемо по коммутативности, если его можно преобразовать в серийное перестановками соседних операций
Сериализуемость по коммутативности эквивалентна сериализуемости по конфликтам
Описание слайда:
Сериализуемость по коммутативности Любые операции чтения коммутируют Любые операции над разными элементами коммутируют Расписание сериализуемо по коммутативности, если его можно преобразовать в серийное перестановками соседних операций Сериализуемость по коммутативности эквивалентна сериализуемости по конфликтам

Слайд 22





Использование замков
Операции установки 
lr(x) – блокировка на чтение, совмещаемая
lw(x) – блокировка на запись, монопольная 
Операции снятия замка ur(x), uw(x)
Описание слайда:
Использование замков Операции установки lr(x) – блокировка на чтение, совмещаемая lw(x) – блокировка на запись, монопольная Операции снятия замка ur(x), uw(x)

Слайд 23





Решение
T1
Описание слайда:
Решение T1

Слайд 24





Совместимость замков
Замки для одного элемента данных несовместимы, если они устанавливаются разными транзакциями и по крайней мере один из них - на запись. 
Попытка установки несовместимого замка переводит транзакцию в состояние ожидания
Проблемы, связанные с использованием замков: корректность, тупики, производительность
Описание слайда:
Совместимость замков Замки для одного элемента данных несовместимы, если они устанавливаются разными транзакциями и по крайней мере один из них - на запись. Попытка установки несовместимого замка переводит транзакцию в состояние ожидания Проблемы, связанные с использованием замков: корректность, тупики, производительность

Слайд 25





Протокол блокирования 2PL
Для каждой операции необходимо предварительно установить замок, все замки должны быть сняты до завершения транзакции
Транзакция не может устанавливать новые замки после того, как она сняла какой-либо из замков
Двухфазный протокол генерирует расписания, сериализуемые по конфликтам
Описание слайда:
Протокол блокирования 2PL Для каждой операции необходимо предварительно установить замок, все замки должны быть сняты до завершения транзакции Транзакция не может устанавливать новые замки после того, как она сняла какой-либо из замков Двухфазный протокол генерирует расписания, сериализуемые по конфликтам

Слайд 26





Проблемы:
Проблемы:
Описание слайда:
Проблемы: Проблемы:

Слайд 27





Тупики

W2(x) w2(y) r1(y) r2(x)
Транзакции, попавшие в тупик, должны быть оборваны
Граф ожиданий
Вершины –активные транзакции
Дуги проводится из ожидающей транзакции в транзакцию, установившую несовместимые замки
Тупик имеет место тогда и только тогда, когда в графе ожиданий имеется контур
Описание слайда:
Тупики W2(x) w2(y) r1(y) r2(x) Транзакции, попавшие в тупик, должны быть оборваны Граф ожиданий Вершины –активные транзакции Дуги проводится из ожидающей транзакции в транзакцию, установившую несовместимые замки Тупик имеет место тогда и только тогда, когда в графе ожиданий имеется контур

Слайд 28





Протокол для деревьев WTL
База данных структурирована как дерево
Протокол:
Все замки – на запись
Для установки замка необходимо иметь установленный замок на родительскую вершину (кроме корня дерева)
Ни один элемент не блокируется дважды одной и то же транзакцией.
Снятие замков возможно в любое время и не препятствует установке новых замков
Описание слайда:
Протокол для деревьев WTL База данных структурирована как дерево Протокол: Все замки – на запись Для установки замка необходимо иметь установленный замок на родительскую вершину (кроме корня дерева) Ни один элемент не блокируется дважды одной и то же транзакцией. Снятие замков возможно в любое время и не препятствует установке новых замков

Слайд 29


Транзакции, слайд №29
Описание слайда:

Слайд 30





Корректность WTL
Граф сериализуемости ацикличен
Пусть y –родитель x, и w1(x) < w2(x), 
тогда w1(y) < w2(y)
Транзакции сериализуются в том порядке, в котором они устанавливают замки на корень
Протокол WTL свободен от тупиков
Последовательность установки замков определяется последовательностью их установки на корень
Описание слайда:
Корректность WTL Граф сериализуемости ацикличен Пусть y –родитель x, и w1(x) < w2(x), тогда w1(y) < w2(y) Транзакции сериализуются в том порядке, в котором они устанавливают замки на корень Протокол WTL свободен от тупиков Последовательность установки замков определяется последовательностью их установки на корень

Слайд 31





Диспетчер транзакций
Модель СУБД: диспетчер (транзакций) и исполнитель запросов
Требования к диспетчеру транзакций: корректность и производительность 
Пессимистические и оптимистические протоколы
Описание слайда:
Диспетчер транзакций Модель СУБД: диспетчер (транзакций) и исполнитель запросов Требования к диспетчеру транзакций: корректность и производительность Пессимистические и оптимистические протоколы

Слайд 32





Виды транзакций в SQL Server
Явные транзакции
Автоматическая фиксация транзакций
Неявные транзакции
Описание слайда:
Виды транзакций в SQL Server Явные транзакции Автоматическая фиксация транзакций Неявные транзакции

Слайд 33





Фазы транзакций
Начало
BEGIN transaction
Конец
Commit
Rollback
Описание слайда:
Фазы транзакций Начало BEGIN transaction Конец Commit Rollback

Слайд 34





Автоматическая фиксация транзакций
Режим по умолчанию. 
Каждая отдельная инструкция языка Transact-SQL фиксируется после завершения. 
Нет необходимости указывать какие-либо инструкции для управления транзакциями.
Описание слайда:
Автоматическая фиксация транзакций Режим по умолчанию. Каждая отдельная инструкция языка Transact-SQL фиксируется после завершения. Нет необходимости указывать какие-либо инструкции для управления транзакциями.

Слайд 35





Неявные транзакции
Установка неявного режима через инструкцию языка Transact-SQL 
SET IMPLICIT_TRANSACTIONS ON. 
Новая транзакция неявно начинается, когда предыдущая транзакция завершена,
Но каждая транзакция явно завершается инструкцией COMMIT или ROLLBACK.
Описание слайда:
Неявные транзакции Установка неявного режима через инструкцию языка Transact-SQL SET IMPLICIT_TRANSACTIONS ON. Новая транзакция неявно начинается, когда предыдущая транзакция завершена, Но каждая транзакция явно завершается инструкцией COMMIT или ROLLBACK.

Слайд 36





Явные транзакции
Каждая транзакция явно начинается с инструкции BEGIN TRANSACTION и явно заканчивается инструкцией COMMIT или ROLLBACK.
Описание слайда:
Явные транзакции Каждая транзакция явно начинается с инструкции BEGIN TRANSACTION и явно заканчивается инструкцией COMMIT или ROLLBACK.

Слайд 37





Проблемы параллельного доступа с использованием транзакций
потерянное обновление (lost update);
«грязное» чтение (dirty read) — чтение данных, которые были записаны откаченной транзакцией;
неповторяющееся чтение 
(non-repeatable read);
фантомное чтение (phantom reads).
Описание слайда:
Проблемы параллельного доступа с использованием транзакций потерянное обновление (lost update); «грязное» чтение (dirty read) — чтение данных, которые были записаны откаченной транзакцией; неповторяющееся чтение (non-repeatable read); фантомное чтение (phantom reads).

Слайд 38





Потерянное обновление
Описание слайда:
Потерянное обновление

Слайд 39





«Грязное» чтение
Описание слайда:
«Грязное» чтение

Слайд 40





Неповторяющееся чтение
Описание слайда:
Неповторяющееся чтение

Слайд 41





Фантомное чтение
Описание слайда:
Фантомное чтение

Слайд 42





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

Слайд 43





Фазы транзакций
Установить уровень изоляции
Начало
BEGIN transaction
Конец
Commit
Rollback
Описание слайда:
Фазы транзакций Установить уровень изоляции Начало BEGIN transaction Конец Commit Rollback

Слайд 44





Уровень изоляции
SET TRANSACTION ISOLATION LEVEL
    { READ UNCOMMITTED
    | READ COMMITTED
    | REPEATABLE READ
    | SNAPSHOT
    | SERIALIZABLE
    }
[ ; ]
Описание слайда:
Уровень изоляции SET TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SNAPSHOT | SERIALIZABLE } [ ; ]

Слайд 45





READ UNCOMMITTED
Не устанавливаются блокировки на чтение
Транзакции могут считывать измененные другими транзакциями, но не зафиксированные строки. Это позволяет считывать незафиксированные изменения, которые называются чтением«грязных» данных. 
Значения в данных могут быть изменены и до окончания транзакции строки могут появляться и исчезать в наборе данных. Это наименьшее ограничение уровней изоляции.
Описание слайда:
READ UNCOMMITTED Не устанавливаются блокировки на чтение Транзакции могут считывать измененные другими транзакциями, но не зафиксированные строки. Это позволяет считывать незафиксированные изменения, которые называются чтением«грязных» данных. Значения в данных могут быть изменены и до окончания транзакции строки могут появляться и исчезать в наборе данных. Это наименьшее ограничение уровней изоляции.

Слайд 46





READ COMMITTED
Нельзя считывать данные, которые были изменены другими транзакциями, но еще не были зафиксированы - «грязные» данных. 
Считанные данные могут быть изменены другими транзакциями во время работы текущей транзакции, результатом чего будет неповторяемое чтение или недействительные данные. 
Этот режим в SQL Server установлен по умолчанию.
Описание слайда:
READ COMMITTED Нельзя считывать данные, которые были изменены другими транзакциями, но еще не были зафиксированы - «грязные» данных. Считанные данные могут быть изменены другими транзакциями во время работы текущей транзакции, результатом чего будет неповторяемое чтение или недействительные данные. Этот режим в SQL Server установлен по умолчанию.

Слайд 47





REPEATABLE READ
Нельзя считывать данные, которые были изменены, но еще не зафиксированы другими транзакциями.
Совмещаемые блокировки применяются ко всем считываемым данным и сохраняются до  завершения. Это запрещает другим транзакциям изменять строки, считанные текущей транзакцией. 
Другие транзакции могут вставлять новые строки, соответствующие условиям поиска текущей транзакции. При повторном чтении диапазона могут появиться новые строки «фантомы».
Описание слайда:
REPEATABLE READ Нельзя считывать данные, которые были изменены, но еще не зафиксированы другими транзакциями. Совмещаемые блокировки применяются ко всем считываемым данным и сохраняются до завершения. Это запрещает другим транзакциям изменять строки, считанные текущей транзакцией. Другие транзакции могут вставлять новые строки, соответствующие условиям поиска текущей транзакции. При повторном чтении диапазона могут появиться новые строки «фантомы».

Слайд 48





SNAPSHOT
Копирует БД на момент начала транзакции. Текущая транзакция не видит изменений данных, произведенных другими транзакциями после запуска текущей транзакции. 
Считывание данных транзакциями моментальных снимков не блокирует запись данных другими транзакциями. 
Если транзакция пытается записать данные, измененные кем-то после ее начала, то она обрывается.
Описание слайда:
SNAPSHOT Копирует БД на момент начала транзакции. Текущая транзакция не видит изменений данных, произведенных другими транзакциями после запуска текущей транзакции. Считывание данных транзакциями моментальных снимков не блокирует запись данных другими транзакциями. Если транзакция пытается записать данные, измененные кем-то после ее начала, то она обрывается.

Слайд 49





SNAPSHOT
Перед запуском транзакции, использующей уровень изоляции моментальных снимков, необходимо установить параметр базы данных ALLOW_SNAPSHOT_ISOLATION в ON. 

Транзакция, работающая с уровнем изоляции моментального снимка, может просматривать внесенные ею изменения.
Описание слайда:
SNAPSHOT Перед запуском транзакции, использующей уровень изоляции моментальных снимков, необходимо установить параметр базы данных ALLOW_SNAPSHOT_ISOLATION в ON. Транзакция, работающая с уровнем изоляции моментального снимка, может просматривать внесенные ею изменения.

Слайд 50





SNAPSHOT
Select name, snapshot_isolation_state, snapshot_isolation_state_desc from sys.databases
ALTER DATABASE Database SET ALLOW_SNAPSHOT_ISOLATION ON;
Описание слайда:
SNAPSHOT Select name, snapshot_isolation_state, snapshot_isolation_state_desc from sys.databases ALTER DATABASE Database SET ALLOW_SNAPSHOT_ISOLATION ON;

Слайд 51





SNAPSHOT
После включения изоляции моментального снимка обновленные версии строк для каждой транзакции содержатся в tempdb. 
Применение такого подхода, предусматривающего отказ от блокировок, способствует значительному снижению вероятности взаимоблокировок в сложных транзакциях.
Описание слайда:
SNAPSHOT После включения изоляции моментального снимка обновленные версии строк для каждой транзакции содержатся в tempdb. Применение такого подхода, предусматривающего отказ от блокировок, способствует значительному снижению вероятности взаимоблокировок в сложных транзакциях.

Слайд 52





SERIALIZABLE
Нельзя считывать данные, которые были изменены другими транзакциями, но еще не были зафиксированы.
Другие транзакции не могут изменять данные, считываемые текущей транзакцией.
Другие транзакции не могут вставлять новые строки со значениями ключа, считываемых текущей транзакции, до ее завершения. При повторном считывании будет тот же самый набор строк.
Описание слайда:
SERIALIZABLE Нельзя считывать данные, которые были изменены другими транзакциями, но еще не были зафиксированы. Другие транзакции не могут изменять данные, считываемые текущей транзакцией. Другие транзакции не могут вставлять новые строки со значениями ключа, считываемых текущей транзакции, до ее завершения. При повторном считывании будет тот же самый набор строк.

Слайд 53





SERIALIZABLE
Блокировки считанного диапазона сохраняются до завершения транзакции. 
Из-за низкого параллелизма этот параметр рекомендуется использовать только при необходимости.
Описание слайда:
SERIALIZABLE Блокировки считанного диапазона сохраняются до завершения транзакции. Из-за низкого параллелизма этот параметр рекомендуется использовать только при необходимости.

Слайд 54


Транзакции, слайд №54
Описание слайда:

Слайд 55





TRANSACTION NAME
Строка до 32 символов
@tran_name_variable 
Имя определенной пользователем переменной, содержащей допустимое имя транзакции.
Описание слайда:
TRANSACTION NAME Строка до 32 символов @tran_name_variable Имя определенной пользователем переменной, содержащей допустимое имя транзакции.

Слайд 56





BEGIN TRANSACTION
BEGIN { TRAN | TRANSACTION } 
    [ { transaction_name | @tran_name_variable }
]
Начинает транзакцию.
Описание слайда:
BEGIN TRANSACTION BEGIN { TRAN | TRANSACTION } [ { transaction_name | @tran_name_variable } ] Начинает транзакцию.

Слайд 57





COMMIT
 BEGIN { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable ] ]
[ ; ]
… 
COMMIT
Фиксирует транзакцию.
Описание слайда:
COMMIT BEGIN { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable ] ] [ ; ] … COMMIT Фиксирует транзакцию.

Слайд 58





Вложенные транзакции
При использовании вложенных транзакций фиксация внутренних транзакций не освобождает ресурсы и не делает их изменения постоянными. Изменения данных становятся постоянными и освобождаются ресурсы только при фиксации внешней транзакции. 
Вызов каждой инструкции COMMIT TRANSACTION приводит к тому, что значение параметра @@TRANCOUNT уменьшается на 1. Когда значение параметра @@TRANCOUNT уменьшится до нуля, вся внешняя транзакция фиксируется. 
Функция @@NESTLEVEL возвращает уровень вложенности транзакций.
Описание слайда:
Вложенные транзакции При использовании вложенных транзакций фиксация внутренних транзакций не освобождает ресурсы и не делает их изменения постоянными. Изменения данных становятся постоянными и освобождаются ресурсы только при фиксации внешней транзакции. Вызов каждой инструкции COMMIT TRANSACTION приводит к тому, что значение параметра @@TRANCOUNT уменьшается на 1. Когда значение параметра @@TRANCOUNT уменьшится до нуля, вся внешняя транзакция фиксируется. Функция @@NESTLEVEL возвращает уровень вложенности транзакций.

Слайд 59





Вложенные транзакции
Так как аргумент transaction_name не учитывается компонентом Database Engine, то вызов инструкции COMMIT TRANSACTION, содержащей ссылку на имя внешней транзакции, приводит к тому, что если существуют невыполненные внутренние транзакции, то производится только уменьшение значения параметра @@TRANCOUNT на 1.
При обрыве (откате) вложенной транзакции откатываются все внешние.
Описание слайда:
Вложенные транзакции Так как аргумент transaction_name не учитывается компонентом Database Engine, то вызов инструкции COMMIT TRANSACTION, содержащей ссылку на имя внешней транзакции, приводит к тому, что если существуют невыполненные внутренние транзакции, то производится только уменьшение значения параметра @@TRANCOUNT на 1. При обрыве (откате) вложенной транзакции откатываются все внешние.

Слайд 60





Вложенные транзакции
create table tbl(id int identity,
field varchar(50))
declare @i bit
begin tran
  insert tbl(field) select 'test1'
  select @i=1 --or 0
  begin tran
    insert tbl(field) select 'test2'
    if @i=1
  rollback tran 
    else 
  commit tran
  insert tbl(field) select 'test3'
commit tran
select * from tbl
drop table tbl
Описание слайда:
Вложенные транзакции create table tbl(id int identity, field varchar(50)) declare @i bit begin tran insert tbl(field) select 'test1' select @i=1 --or 0 begin tran insert tbl(field) select 'test2' if @i=1 rollback tran else commit tran insert tbl(field) select 'test3' commit tran select * from tbl drop table tbl

Слайд 61





SAVE
SAVE { TRAN | TRANSACTION } { savepoint_name | @savepoint_variable }
Устанавливает точку сохранения внутри транзакции.
Описание слайда:
SAVE SAVE { TRAN | TRANSACTION } { savepoint_name | @savepoint_variable } Устанавливает точку сохранения внутри транзакции.

Слайд 62





ROLLBACK
ROLLBACK { TRAN | TRANSACTION } 
     [ transaction_name | @tran_name_variable
     | savepoint_name | @savepoint_variable ] 
Откатывает транзакцию до ее начала или до заданной точки сохранения
Описание слайда:
ROLLBACK ROLLBACK { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable | savepoint_name | @savepoint_variable ] Откатывает транзакцию до ее начала или до заданной точки сохранения

Слайд 63





ROLLBACK
Инструкция ROLLBACK TRANSACTION без аргумента savepoint_name или transaction_name откатывает изменения на начало транзакции. 
При наличии вложенных транзакций эта инструкция откатывает все внутренние транзакции к началу самой внешней инструкции BEGIN TRANSACTION. В обоих случаях инструкция ROLLBACK TRANSACTION уменьшает @@TRANCOUNT до 0.
Описание слайда:
ROLLBACK Инструкция ROLLBACK TRANSACTION без аргумента savepoint_name или transaction_name откатывает изменения на начало транзакции. При наличии вложенных транзакций эта инструкция откатывает все внутренние транзакции к началу самой внешней инструкции BEGIN TRANSACTION. В обоих случаях инструкция ROLLBACK TRANSACTION уменьшает @@TRANCOUNT до 0.

Слайд 64





ROLLBACK
Инструкция ROLLBACK TRANSACTION savepoint_name не уменьшает @@TRANCOUNT.
Инструкция ROLLBACK TRANSACTION в хранимой процедуре не влияет на последующие инструкции в пакете, вызвавшем процедуру; последующие инструкции в пакете выполняются.
Описание слайда:
ROLLBACK Инструкция ROLLBACK TRANSACTION savepoint_name не уменьшает @@TRANCOUNT. Инструкция ROLLBACK TRANSACTION в хранимой процедуре не влияет на последующие инструкции в пакете, вызвавшем процедуру; последующие инструкции в пакете выполняются.

Слайд 65





CREATE TABLE ValueTable ([value] int)
CREATE TABLE ValueTable ([value] int)
DECLARE @TrName varchar(20) = 'Tr1';
BEGIN TRAN @TrName
       INSERT INTO ValueTable VALUES(1)
ROLLBACK TRAN @TrName
INSERT INTO ValueTable VALUES(2)
SELECT * FROM ValueTable
DROP TABLE ValueTable
Описание слайда:
CREATE TABLE ValueTable ([value] int) CREATE TABLE ValueTable ([value] int) DECLARE @TrName varchar(20) = 'Tr1'; BEGIN TRAN @TrName INSERT INTO ValueTable VALUES(1) ROLLBACK TRAN @TrName INSERT INTO ValueTable VALUES(2) SELECT * FROM ValueTable DROP TABLE ValueTable

Слайд 66





CREATE TABLE ValueTable ([value] int)
CREATE TABLE ValueTable ([value] int)
DECLARE @TrName varchar(20) = 'Tr1';
BEGIN TRAN @TrName
       INSERT INTO ValueTable VALUES(1)
ROLLBACK TRAN @TrName
INSERT INTO ValueTable VALUES(2)
SELECT * FROM ValueTable
DROP TABLE ValueTable
2
Описание слайда:
CREATE TABLE ValueTable ([value] int) CREATE TABLE ValueTable ([value] int) DECLARE @TrName varchar(20) = 'Tr1'; BEGIN TRAN @TrName INSERT INTO ValueTable VALUES(1) ROLLBACK TRAN @TrName INSERT INTO ValueTable VALUES(2) SELECT * FROM ValueTable DROP TABLE ValueTable 2

Слайд 67





Пример отката с точкой
CREATE TABLE ValueTable ([value] int)
BEGIN TRAN
       INSERT INTO ValueTable VALUES(1)
BEGIN TRAN
       INSERT INTO ValueTable VALUES(2)
SAVE TRAN SavePoint1
BEGIN TRAN
       INSERT INTO ValueTable VALUES(3)
ROLLBACK TRAN SavePoint1
INSERT INTO ValueTable VALUES(4)
SELECT * FROM ValueTable
DROP TABLE ValueTable
Описание слайда:
Пример отката с точкой CREATE TABLE ValueTable ([value] int) BEGIN TRAN INSERT INTO ValueTable VALUES(1) BEGIN TRAN INSERT INTO ValueTable VALUES(2) SAVE TRAN SavePoint1 BEGIN TRAN INSERT INTO ValueTable VALUES(3) ROLLBACK TRAN SavePoint1 INSERT INTO ValueTable VALUES(4) SELECT * FROM ValueTable DROP TABLE ValueTable

Слайд 68


Транзакции, слайд №68
Описание слайда:

Слайд 69


Транзакции, слайд №69
Описание слайда:

Слайд 70


Транзакции, слайд №70
Описание слайда:

Слайд 71





Обработка ошибок
CREATE TABLE table1 (
i int NOT NULL PRIMARY KEY,
col1 varchar(20) NOT NULL,
col2 varchar(20) NULL);
INSERT INTO table1 (i,col1,col2)
VALUES (1,'First row','First row');
INSERT INTO table1 (i,col1,col2) 
VALUES (2,NULL,'Second row');
INSERT INTO table1 (i,col1,col2) 
VALUES (3,'Third row','Third row');
Описание слайда:
Обработка ошибок CREATE TABLE table1 ( i int NOT NULL PRIMARY KEY, col1 varchar(20) NOT NULL, col2 varchar(20) NULL); INSERT INTO table1 (i,col1,col2) VALUES (1,'First row','First row'); INSERT INTO table1 (i,col1,col2) VALUES (2,NULL,'Second row'); INSERT INTO table1 (i,col1,col2) VALUES (3,'Third row','Third row');

Слайд 72





Обработка ошибок
BEGIN TRAN
INSERT INTO table1 (i,col1,col2) 
VALUES (1,'First row','First row');
INSERT INTO table1 (i,col1,col2) 
VALUES (2,NULL,'Second row');
INSERT INTO table1 (i,col1,col2) 
VALUES (3,'Third row','Third row');
COMMIT TRAN;
Описание слайда:
Обработка ошибок BEGIN TRAN INSERT INTO table1 (i,col1,col2) VALUES (1,'First row','First row'); INSERT INTO table1 (i,col1,col2) VALUES (2,NULL,'Second row'); INSERT INTO table1 (i,col1,col2) VALUES (3,'Third row','Third row'); COMMIT TRAN;

Слайд 73





SET XACT_ABORT { ON | OFF }
Если выполнена инструкция SET XACT_ABORT ON и инструкция языка Transact-SQL вызывает ошибку, вся транзакция завершается и выполняется ее откат.
Если выполнена инструкция SET XACT_ABORT OFF, в некоторых случаях выполняется откат только вызвавшей ошибку инструкции языка Transact-SQL, а обработка транзакции продолжается. В зависимости от серьезности ошибки возможен откат всей транзакции при выполненной инструкции SET XACT_ABORT OFF. 
OFF — установка по умолчанию.
Описание слайда:
SET XACT_ABORT { ON | OFF } Если выполнена инструкция SET XACT_ABORT ON и инструкция языка Transact-SQL вызывает ошибку, вся транзакция завершается и выполняется ее откат. Если выполнена инструкция SET XACT_ABORT OFF, в некоторых случаях выполняется откат только вызвавшей ошибку инструкции языка Transact-SQL, а обработка транзакции продолжается. В зависимости от серьезности ошибки возможен откат всей транзакции при выполненной инструкции SET XACT_ABORT OFF. OFF — установка по умолчанию.

Слайд 74





XACT_STATE
Является скалярной функцией, которая сообщает о состоянии пользовательской транзакции текущего выполняемого запроса. Функция XACT_STATE указывает, имеет ли запрос активную пользовательскую транзакцию и может ли она быть зафиксирована.
SELECT XACT_STATE()
Тип возвращаемых данных smallint
Описание слайда:
XACT_STATE Является скалярной функцией, которая сообщает о состоянии пользовательской транзакции текущего выполняемого запроса. Функция XACT_STATE указывает, имеет ли запрос активную пользовательскую транзакцию и может ли она быть зафиксирована. SELECT XACT_STATE() Тип возвращаемых данных smallint

Слайд 75





XACT_STATE возвращаемые  значения
Описание слайда:
XACT_STATE возвращаемые значения

Слайд 76





Обработка ошибок
BEGIN TRY
     { sql_statement | statement_block }
END TRY
BEGIN CATCH
     [ { sql_statement | statement_block } ]
END CATCH
[ ; ]
Описание слайда:
Обработка ошибок BEGIN TRY { sql_statement | statement_block } END TRY BEGIN CATCH [ { sql_statement | statement_block } ] END CATCH [ ; ]

Слайд 77





Обработка ошибок
BEGIN TRY 
 BEGIN TRAN
  INSERT INTO table1 (i,col1,col2) VALUES (1,'First row','First row'); 
  INSERT INTO table1 (i,col1,col2) VALUES (2,NULL,'Second row'); 
  INSERT INTO table1 (i,col1,col2) VALUES (3,'Third row','Third row');
 COMMIT TRAN; 
END TRY 
BEGIN CATCH
 ROLLBACK TRAN 
END CATCH;
SELECT @@error;
Описание слайда:
Обработка ошибок BEGIN TRY BEGIN TRAN INSERT INTO table1 (i,col1,col2) VALUES (1,'First row','First row'); INSERT INTO table1 (i,col1,col2) VALUES (2,NULL,'Second row'); INSERT INTO table1 (i,col1,col2) VALUES (3,'Third row','Third row'); COMMIT TRAN; END TRY BEGIN CATCH ROLLBACK TRAN END CATCH; SELECT @@error;

Слайд 78





Тупики и бесконечные ожидания
SET LOCK_TIMEOUT 2000;
SET LOCK_TIMEOUT -1 – бесконечное ожидание
Описание слайда:
Тупики и бесконечные ожидания SET LOCK_TIMEOUT 2000; SET LOCK_TIMEOUT -1 – бесконечное ожидание

Слайд 79





Гранулярность блокировок
Описание слайда:
Гранулярность блокировок

Слайд 80





Уровни блокировок
Table (TAB): Это самая грубая логическая блокировка, которую может использовать SQL Server. 
Extent (EXT): Эти блокировки не используются для блокирования логических строк, а используются, когда SQL Server создает новые таблицы или расширяет существующие, также вы можете их видеть, когда файл увеличивается в размере.
Page (PAG): Когда SQL Server требуется заблокировать одновременно множество строк, а свободные слоты блокировок заканчиваются, то он может использовать страничные блокировки. 
Key (KEY): Лучший уровень блокировки, возможный в SQL Server, вместе с RID блокировкой. KEY блокировки используются в индексах, а RID блокировки - в таблицах-кучах.
Описание слайда:
Уровни блокировок Table (TAB): Это самая грубая логическая блокировка, которую может использовать SQL Server. Extent (EXT): Эти блокировки не используются для блокирования логических строк, а используются, когда SQL Server создает новые таблицы или расширяет существующие, также вы можете их видеть, когда файл увеличивается в размере. Page (PAG): Когда SQL Server требуется заблокировать одновременно множество строк, а свободные слоты блокировок заканчиваются, то он может использовать страничные блокировки. Key (KEY): Лучший уровень блокировки, возможный в SQL Server, вместе с RID блокировкой. KEY блокировки используются в индексах, а RID блокировки - в таблицах-кучах.

Слайд 81





Уровни блокировок
Высокая конкурентность означает, что множество пользователей может работать одновременно. По возможности это достигается путем небольших блокировок, чтобы не блокировать без необходимости данные, нужные другим пользователям. 
С другой стороны, высокая скорость может быть достигнута при помощи больших блокировок, что быстрее, чем накладывание множества маленьких блокировок.
Описание слайда:
Уровни блокировок Высокая конкурентность означает, что множество пользователей может работать одновременно. По возможности это достигается путем небольших блокировок, чтобы не блокировать без необходимости данные, нужные другим пользователям. С другой стороны, высокая скорость может быть достигнута при помощи больших блокировок, что быстрее, чем накладывание множества маленьких блокировок.

Слайд 82





Иерархия объектов
Описание слайда:
Иерархия объектов

Слайд 83





Эскалация блокировок
Эскалация блокировок – это процесс, при котором множество блокировок с маленькой гранулярностью, конвертируются в одну блокировку на более высоком уровне иерархии с большей гранулярностью.
Описание слайда:
Эскалация блокировок Эскалация блокировок – это процесс, при котором множество блокировок с маленькой гранулярностью, конвертируются в одну блокировку на более высоком уровне иерархии с большей гранулярностью.

Слайд 84





Проблемы маленьких блокировок
Locking overhead. иногда выгоднее наложить одну блокировку с большей гранулярностью, чем несколько (или несколько тысяч) более мелких.
Data contention. Наложение одной блокировки - действие атомарное, а наложение нескольких блокировок уже таковым не является.
Resource contention. Блокировки занимают место + нуждаются так же и в некотором обслуживании, которое расходует системные ресурсы (проверка на тупики). + предел количества транзакций, которые могут выполняться в системе одновременно без ущерба для производительности.
Описание слайда:
Проблемы маленьких блокировок Locking overhead. иногда выгоднее наложить одну блокировку с большей гранулярностью, чем несколько (или несколько тысяч) более мелких. Data contention. Наложение одной блокировки - действие атомарное, а наложение нескольких блокировок уже таковым не является. Resource contention. Блокировки занимают место + нуждаются так же и в некотором обслуживании, которое расходует системные ресурсы (проверка на тупики). + предел количества транзакций, которые могут выполняться в системе одновременно без ущерба для производительности.

Слайд 85





Подсказки оптимизатору
По умолчанию сервер старается наложить блокировку min гранулярности. Если сервер посчитает, что блокировать на уровне отдельной записи не самое оптимальное решение, то он заблокирует больший объем. 
Можно указать явно, с какой гранулярностью блокировать, с помощью специальных подсказок оптимизатору (hints) (в сторону увеличения!).
ROWLOCK – блокировка на уровне записи.
PGLOCK - блокировка на уровне страницы данных.
TABLOCK – блокировка на уровне таблицы.
Описание слайда:
Подсказки оптимизатору По умолчанию сервер старается наложить блокировку min гранулярности. Если сервер посчитает, что блокировать на уровне отдельной записи не самое оптимальное решение, то он заблокирует больший объем. Можно указать явно, с какой гранулярностью блокировать, с помощью специальных подсказок оптимизатору (hints) (в сторону увеличения!). ROWLOCK – блокировка на уровне записи. PGLOCK - блокировка на уровне страницы данных. TABLOCK – блокировка на уровне таблицы.

Слайд 86





Восстановление
Индивидуальный откат транзакции. 
Восстановление после внезапной потери содержимого оперативной памяти. 
Восстановление после поломки основного внешнего носителя базы данных.
Описание слайда:
Восстановление Индивидуальный откат транзакции. Восстановление после внезапной потери содержимого оперативной памяти. Восстановление после поломки основного внешнего носителя базы данных.

Слайд 87





Отказы приложений
завершение оператором ROLLBACK; 
аварийное завершение работы прикладной программы; 
принудительный откат транзакции в случае взаимной блокировки при параллельном выполнении транзакций.
Описание слайда:
Отказы приложений завершение оператором ROLLBACK; аварийное завершение работы прикладной программы; принудительный откат транзакции в случае взаимной блокировки при параллельном выполнении транзакций.

Слайд 88





Технические проблемы
Мягкий сбой 
при аварийном выключении электрического питания; 
при возникновении неустранимого сбоя процессора и т. д. Потеря той части базы данных, которая к моменту сбоя содержалась в буферах оперативной памяти. 
Жесткий сбой
Восстановление после поломки основного внешнего носителя базы данных. Основой восстановления является архивная копия и журнал изменений базы данных.
Описание слайда:
Технические проблемы Мягкий сбой при аварийном выключении электрического питания; при возникновении неустранимого сбоя процессора и т. д. Потеря той части базы данных, которая к моменту сбоя содержалась в буферах оперативной памяти. Жесткий сбой Восстановление после поломки основного внешнего носителя базы данных. Основой восстановления является архивная копия и журнал изменений базы данных.

Слайд 89





Возобновление при отказах
Отказы приложений/транзакции: транзакции обрываются
Отказы системы: функционирование возобновляется после рестарта и восстановления согласованности БД
Разрушение носителя: рестарт, восстановление с резервной копии, восстановление согласованности
Описание слайда:
Возобновление при отказах Отказы приложений/транзакции: транзакции обрываются Отказы системы: функционирование возобновляется после рестарта и восстановления согласованности БД Разрушение носителя: рестарт, восстановление с резервной копии, восстановление согласованности

Слайд 90





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

Слайд 91





Восстановимость
Восстановимость расписаний: транзакции должны фиксироваться до того, как их результаты используются другими транзакциями
Пример невосстановимого расписания
w1(x) w2(x) c2 a1
S2L (Двухфазный протокол с удержанием замков на запись до конца транзакции) гарантирует восстановимость
Описание слайда:
Восстановимость Восстановимость расписаний: транзакции должны фиксироваться до того, как их результаты используются другими транзакциями Пример невосстановимого расписания w1(x) w2(x) c2 a1 S2L (Двухфазный протокол с удержанием замков на запись до конца транзакции) гарантирует восстановимость

Слайд 92





Откат
По команде rollback система откатит транзакцию на начало (на неявную точку отката)
По команде commit – зафиксирует всё до неявной точки фиксации, которая соответствует последней завершённой команде в транзакции. Если в транзакции из нескольких команд во время выполнения очередной команды возникнет ошибка, то система откатит только эту ошибочную команду, т.е. отменит её результаты и сохранит прежнюю неявную точку фиксации.
Описание слайда:
Откат По команде rollback система откатит транзакцию на начало (на неявную точку отката) По команде commit – зафиксирует всё до неявной точки фиксации, которая соответствует последней завершённой команде в транзакции. Если в транзакции из нескольких команд во время выполнения очередной команды возникнет ошибка, то система откатит только эту ошибочную команду, т.е. отменит её результаты и сохранит прежнюю неявную точку фиксации.

Слайд 93





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

Слайд 94





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

Слайд 95





Savepoint
savepoint запоминает промежуточную "текущую копию" состояния базы данных для того, чтобы при необходимости можно было вернуться к состоянию БД в точке сохранения: откатить работу от текущего момента до точки сохранения (rollback to <имя_точки>) или зафиксировать работу от начала транзакции до точки сохранения (commit to <имя_точки>). 
На одну транзакцию может быть несколько точек сохранения (ограничение на их количество зависит от СУБД).
Описание слайда:
Savepoint savepoint запоминает промежуточную "текущую копию" состояния базы данных для того, чтобы при необходимости можно было вернуться к состоянию БД в точке сохранения: откатить работу от текущего момента до точки сохранения (rollback to <имя_точки>) или зафиксировать работу от начала транзакции до точки сохранения (commit to <имя_точки>). На одну транзакцию может быть несколько точек сохранения (ограничение на их количество зависит от СУБД).

Слайд 96





Журнал транзакций
Журнал транзакций – это часть БД, в которую поступают данные обо всех изменениях всех объектов БД. Журнал недоступен пользователям СУБД и поддерживается особо тщательно. Форма записи в журнал изменений зависит от СУБД. Но обычно там фиксируется:
номер транзакции (номера присваиваются автоматически по возрастанию);
состояние транзакции (завершена фиксацией или откатом, не завершена, находится в состоянии ожидания);
точки сохранения (явные и неявные);
команды, составляющие транзакцию, и проч.
Описание слайда:
Журнал транзакций Журнал транзакций – это часть БД, в которую поступают данные обо всех изменениях всех объектов БД. Журнал недоступен пользователям СУБД и поддерживается особо тщательно. Форма записи в журнал изменений зависит от СУБД. Но обычно там фиксируется: номер транзакции (номера присваиваются автоматически по возрастанию); состояние транзакции (завершена фиксацией или откатом, не завершена, находится в состоянии ожидания); точки сохранения (явные и неявные); команды, составляющие транзакцию, и проч.

Слайд 97





Ведение журнала
Журнал ведется последовательно
Опережающая запись в журнал (WAL, write-ahead log)
Регистрируются операции записи, начала и конца транзакций
Каждая запись содержит данные отката (undo)и «наката» (redo)
При фиксации запись журнала обязательно «выталкивается» на диск
Описание слайда:
Ведение журнала Журнал ведется последовательно Опережающая запись в журнал (WAL, write-ahead log) Регистрируются операции записи, начала и конца транзакций Каждая запись содержит данные отката (undo)и «наката» (redo) При фиксации запись журнала обязательно «выталкивается» на диск

Слайд 98





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

Слайд 99





Восстановление 
после системных отказов
Необходим рестарт сервера БД
Для того, чтобы восстановление было возможным, необходимо вести журнал обновлений
При нормальной работе БД все изменения записываются в журнал
При рестарте журнал используется для повторения операций и для отката незавершенных транзакций
Описание слайда:
Восстановление после системных отказов Необходим рестарт сервера БД Для того, чтобы восстановление было возможным, необходимо вести журнал обновлений При нормальной работе БД все изменения записываются в журнал При рестарте журнал используется для повторения операций и для отката незавершенных транзакций

Слайд 100





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

Слайд 101





Что нужно сделать при восстановлении
Определить, какие транзакции были зафиксированы до отказа и какие были активными (не завершены)
Если необходимо, повторить изменения зафиксированных транзакций
Оборвать незавершенные до отказа транзакции (выполнить откат)
Описание слайда:
Что нужно сделать при восстановлении Определить, какие транзакции были зафиксированы до отказа и какие были активными (не завершены) Если необходимо, повторить изменения зафиксированных транзакций Оборвать незавершенные до отказа транзакции (выполнить откат)

Слайд 102





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

Слайд 103





Журнал транзакций поддерживает:
восстановление отдельных транзакций;
восстановление всех незавершенных транзакций при запуске SQL Server;
откат восстановленной базы данных, файла, файловой группы или страницы до момента сбоя.
поддержка репликации транзакций;
поддержка решений высокого уровня доступности и аварийного восстановления
Описание слайда:
Журнал транзакций поддерживает: восстановление отдельных транзакций; восстановление всех незавершенных транзакций при запуске SQL Server; откат восстановленной базы данных, файла, файловой группы или страницы до момента сбоя. поддержка репликации транзакций; поддержка решений высокого уровня доступности и аварийного восстановления

Слайд 104





Алгоритм восстановления при рестарте
Фаза просмотра: найти все зафиксированные и активные транзакции (прямой просмотр журнала)
Фаза наката (redo): при прямом просмотре, выполнить все операции зафиксированных транзакций
Фаза отката (undo): обратный просмотр журнала, откат всех операций незавершенных транзакций
Описание слайда:
Алгоритм восстановления при рестарте Фаза просмотра: найти все зафиксированные и активные транзакции (прямой просмотр журнала) Фаза наката (redo): при прямом просмотре, выполнить все операции зафиксированных транзакций Фаза отката (undo): обратный просмотр журнала, откат всех операций незавершенных транзакций

Слайд 105





Завершение восстановления
После завершения фазы отката необходимо
Записать на диск все измененные блоки БД
После записи БД можно очистить журнал
Возобновить нормальную работу системы
Описание слайда:
Завершение восстановления После завершения фазы отката необходимо Записать на диск все измененные блоки БД После записи БД можно очистить журнал Возобновить нормальную работу системы

Слайд 106






CREATE DATABASE Sales 
ON ( NAME = Sales_dat, FILENAME = 'C:\tmp\saledat.mdf', 
SIZE = 10, 
MAXSIZE = 50, 
FILEGROWTH = 5 ) 
LOG ON ( NAME = Sales_log, FILENAME = 'C:\tmp\salelog.ldf', 
SIZE = 5MB, 
MAXSIZE = 25MB, 
FILEGROWTH = 5MB ) ;
Описание слайда:
CREATE DATABASE Sales ON ( NAME = Sales_dat, FILENAME = 'C:\tmp\saledat.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = Sales_log, FILENAME = 'C:\tmp\salelog.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) ;

Слайд 107





Усечение журнала транзакций
Процесс усечения журнала освобождает место в файле журнала для повторного использования журналом транзакций. 
Усечение журнала необходимо для предотвращения переполнения журнала. 
При усечении журнала удаляются неактивные виртуальные файлы журнала из логического журнала транзакций базы данных SQL Server. 
Если усечение журнала транзакций не выполняется, со временем он заполняет все доступное место на диске, отведенное для файлов физического журнала.
Усечение журнала выполняется автоматически
Описание слайда:
Усечение журнала транзакций Процесс усечения журнала освобождает место в файле журнала для повторного использования журналом транзакций. Усечение журнала необходимо для предотвращения переполнения журнала. При усечении журнала удаляются неактивные виртуальные файлы журнала из логического журнала транзакций базы данных SQL Server. Если усечение журнала транзакций не выполняется, со временем он заполняет все доступное место на диске, отведенное для файлов физического журнала. Усечение журнала выполняется автоматически

Слайд 108





Сжатие журнала
Усечение журнала не приводит к уменьшению размера физического файла журнала.
Для уменьшения реального размера физического файла журнала необходимо выполнить его сжатие.
DBCC SHRINKFILE (DataFile1, 7);
DataFile1 – имя файла, 7 – размер в МБ);
Описание слайда:
Сжатие журнала Усечение журнала не приводит к уменьшению размера физического файла журнала. Для уменьшения реального размера физического файла журнала необходимо выполнить его сжатие. DBCC SHRINKFILE (DataFile1, 7); DataFile1 – имя файла, 7 – размер в МБ);

Слайд 109





Модель транзакций
Описание слайда:
Модель транзакций

Слайд 110





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



Похожие презентации
Mypresentation.ru
Загрузить презентацию