Разделы презентаций


Управление транзакциями

Содержание

Основные понятияТранзакция – это неделимая последовательность действий, переводящая базу данных из одного непротиворечивого состояния в другое непротиворечивое состояниеНеобходимость в достоверности и согласованностиПри наличии отказов оборудования и программПри эксплуатации БД в многопользовательской

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

Слайд 1Управление транзакциями
Управление базами данных

Управление транзакциямиУправление базами данных

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

из одного непротиворечивого состояния в другое непротиворечивое состояние

Необходимость в достоверности

и согласованности
При наличии отказов оборудования и программ
При эксплуатации БД в многопользовательской среде

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

Слайд 3Основные понятия
Свойства транзакции:
Атомарность (Atomicity)
Согласованность (Consistency)
Изолированность (Isolation)
Устойчивость (Durability)

Основные понятияСвойства транзакции:Атомарность (Atomicity)Согласованность (Consistency)Изолированность (Isolation)Устойчивость (Durability)

Слайд 4Основные понятия
SELECT * FROM Exemplars e JOIN Readers r ON

e.reader_id = r.reader_id

BEGIN TRAN

UPDATE Exemplars SET reader_id = 2
WHERE inv

= 2

SELECT * FROM Exemplars e JOIN Readers r ON e.reader_id = r.reader_id

ROLLBACK TRAN /*COMMIT TRAN*/

SELECT * FROM Exemplars e JOIN Readers r ON e.reader_id = r.reader_id
Основные понятияSELECT * FROM Exemplars e JOIN Readers r ON e.reader_id = r.reader_idBEGIN TRANUPDATE Exemplars SET reader_id

Слайд 5Управление параллельностью
Управление параллельностью выполнения транзакций – это процесс организации выполнения

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

Управление параллельностьюУправление параллельностью выполнения транзакций – это процесс организации выполнения различных операций с БД, гарантирующий исключение взаимного

Слайд 6Управление параллельностью
Проблемы параллельной обработки данных:
Проблема потерянного обновления. Lost Updates
Зависимость от

нефиксированных результатов (Проблема «грязного» чтения). Uncommitted Dependency (Dirty Read)
Проблема несогласованной

обработки (Проблема неповторяемого чтения). Inconsistent Analysis (Nonrepeatable Read)
Проблема чтения фантомов. Phantom Reads
Управление параллельностьюПроблемы параллельной обработки данных:Проблема потерянного обновления. Lost UpdatesЗависимость от нефиксированных результатов (Проблема «грязного» чтения). Uncommitted Dependency

Слайд 7Управление параллельностью
Проблема потерянного обновления. Lost Updates
bal=100
T1 – снять 10
T2 –

добавить 100
Ожидаемый результат: 100+100-10=190
Решение проблемы: T1 не должна читать данные

до того, как они будут зафиксированы
Управление параллельностьюПроблема потерянного обновления. Lost Updatesbal=100T1 – снять 10T2 – добавить 100Ожидаемый результат: 100+100-10=190Решение проблемы: T1 не

Слайд 8Управление параллельностью
Зависимость от нефиксированных результатов (Проблема «грязного» чтения)
bal=100
T1 –

снять 10
T2 – попытка добавить 100, но без фиксации результата
Ожидаемый

результат: 100-10=90

Решение проблемы: T1 не должна читать данные до того, как они будут зафиксированы

Управление параллельностьюЗависимость от нефиксированных результатов (Проблема «грязного» чтения) bal=100T1 – снять 10T2 – попытка добавить 100, но

Слайд 9Управление параллельностью
Проблема несогласованной обработки (Проблема неповторяемого чтения)
bal1=100, bal2=50, bal3=25
T1

– снять 10 с bal1 и поместить в bal3
T2 –

Вычислить сумму bal1, bal2, bal3 Ожидаемый результат: 175

База данных – в непротиворечивом состоянии, но sum - некорректная

Управление параллельностьюПроблема несогласованной обработки (Проблема неповторяемого чтения) bal1=100, bal2=50, bal3=25T1 – снять 10 с bal1 и поместить

Слайд 10Управление параллельностью
Проблема чтения фантомов
Решение проблемы: T1 не должна удалять данные

до того, как завершится T2
T1 – удалить строку из таблицы
T2

– найти сумму по столбцу P
Управление параллельностьюПроблема чтения фантомовРешение проблемы: T1 не должна удалять данные до того, как завершится T2T1 – удалить

Слайд 11Управление параллельностью
Уровни изоляции транзакций в MS SQL Server:
READ UNCOMMITED -

незавершенное чтение. Гарантируется только физическая целостность БД. Изоляция отсутствует
READ COMMITED

– Решается проблема «грязного чтения», но остается неповторяемость чтения. Это уровень изоляции по умолчанию
REPEATABLE READ – повторяемое чтение. Решается проблема неповторяемого чтения, но проблема фантомов остается. Снижается степень параллелизма
SERIALIZABLE – сериализуемость. Полная изоляция транзакций, параллельность выполнения транзакций почти исключается

Пример:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITED

Управление параллельностьюУровни изоляции транзакций в MS SQL Server:READ UNCOMMITED - незавершенное чтение. Гарантируется только физическая целостность БД.

Слайд 12Методы управления параллельностью
Подходы:
Пессимистический подход – выполнение транзакции откладывается, если возможен

конфликт между транзакциями
Метод выявления взаимных блокировок
Метод временных отметок
Оптимистический подход –

все транзакции выполняются асинхронно и после завершения транзакции принимается решение о корректности ее выполнения

Блокировка (lock) – это временно накладываемое ограничение на выполнение операции над ресурсом (ресурс – строка, столбец, таблица, БД)

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

Слайд 13Методы управления параллельностью
Основные типы блокировок:
S-блокировка (Shared Lock) - разделяемая (нежесткая)

блокировка. Запрещает изменение объекта, но чтение объекта разрешается любой транзакции.

Снять блокировку может только та транзакция, которая ее установила.
X-блокировка (Exclusive Lock) – монопольная (жесткая, эксклюзивная) блокировка. Позволяет изменять объект только той транзакции, которая наложила эту блокировку. Другие транзакции не могут ни читать, ни изменять объект.
Методы управления параллельностьюОсновные типы блокировок:S-блокировка (Shared Lock) - разделяемая (нежесткая) блокировка. Запрещает изменение объекта, но чтение объекта

Слайд 14Двухфазный протокол блокировки
Выполнение транзакции имеет две фазы:
Фаза нарастания (расширения): транзакция

устанавливает блокировки на необходимые ресурсы. Ресурсы не освобождаются, даже если

они не будут использованы транзакцией
Фаза сжатия: транзакция только снимает блокировки с ресурсов
Двухфазный протокол блокировкиВыполнение транзакции имеет две фазы:Фаза нарастания (расширения): транзакция устанавливает блокировки на необходимые ресурсы. Ресурсы не

Слайд 15Двухфазный протокол блокировки
Решение проблемы потерянного обновления

Двухфазный протокол блокировкиРешение проблемы потерянного обновления

Слайд 16Двухфазный протокол блокировки
Решение проблемы зависимости от нефиксированных результатов

Двухфазный протокол блокировкиРешение проблемы зависимости от нефиксированных результатов

Слайд 17Двухфазный протокол блокировки
Решение проблемы несогласованной обработки данных

Двухфазный протокол блокировкиРешение проблемы несогласованной обработки данных

Слайд 18Двухфазный протокол блокировки
Решение проблемы чтения фантомов

Двухфазный протокол блокировкиРешение проблемы чтения фантомов

Слайд 19Взаимные блокировки
Взаимная блокировка (тупиковая блокировка, «мертвая» блокировка, deadlock) имеет место

тогда, когда две или более транзакции находятся в бесконечном ожидании

освобождения ресурса, занимаемого каждой из них

T1: bal1=bal1-10, потом bal2=bal2-10
T2: bal2=bal2+100, потом bal1=bal1+100

Взаимные блокировкиВзаимная блокировка (тупиковая блокировка, «мертвая» блокировка, deadlock) имеет место тогда, когда две или более транзакции находятся

Слайд 20Взаимные блокировки
Двухфазный протокол блокировки не решает проблемы взаимной блокировки

Взаимные блокировкиДвухфазный протокол блокировки не решает проблемы взаимной блокировки

Слайд 21Взаимные блокировки
Msg 1205, Level 13, State 56, Procedure P2, Line

27
Transaction (Process ID 55) was deadlocked on lock resources with

another process and has been chosen as the deadlock victim. Rerun the transaction.

ALTER PROCEDURE [dbo].[P2]
AS
BEGIN
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRAN

DECLARE @i INT
DECLARE @id INT
SET @i=1

DELETE FROM T2

WHILE @i < 1000
BEGIN
INSERT INTO T2 (data) VALUES(@i)
SET @i = @i+1
END

WHILE (SELECT COUNT(*) FROM T1) > 0
BEGIN
SET @id = (SELECT TOP 1 id FROM T1);
DELETE T1 WHERE id = @id
END

COMMIT TRAN
END

ALTER PROCEDURE [dbo].[P1]
AS
BEGIN
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRAN

DECLARE @i INT
DECLARE @id INT
SET @i=1

DELETE FROM T1

WHILE @i < 10000
BEGIN
INSERT INTO T1 (data) VALUES(@i)
SET @i = @i+1
END

WHILE (SELECT COUNT(*) FROM T2) > 0
BEGIN
SET @id = (SELECT TOP 1 id FROM T2);
DELETE T2 WHERE id = @id
END

COMMIT TRAN
END

Взаимные блокировкиMsg 1205, Level 13, State 56, Procedure P2, Line 27Transaction (Process ID 55) was deadlocked on

Слайд 22Взаимные блокировки
транзакция Ti ожидает освобождения блокировки ресурса X, выставленной транзакцией

Tj
T1
T2
T3
X
Y
Y
петля в графе – взаимная блокировка
T1
T2
X
Y
T3
Z

Взаимные блокировкитранзакция Ti ожидает освобождения блокировки ресурса X, выставленной транзакцией TjT1T2T3XYYпетля в графе – взаимная блокировкаT1T2XYT3Z

Слайд 23Метод выявления взаимных блокировок
Выявление взаимных блокировок:
СУБД строит граф ожиданий через

определенные промежутки времени
Если в графе ожидания имеются петли, то делается

вывод о наличии взаимных блокировок. В петле выбирается транзакция жертва (по некоторому критерию стоимости) и происходит откат транзакции-жертвы. Петля разрывается и остальные транзакции продолжают выполнение.

Недостаток: построение графа ожиданий загружает СУБД
Метод выявления взаимных блокировокВыявление взаимных блокировок:СУБД строит граф ожиданий через определенные промежутки времениЕсли в графе ожидания имеются

Слайд 24Метод предупреждения взаимных блокировок
Основная идея метода предупреждения взаимных блокировок: устанавливается

порядок выполнения транзакций на основе временных отметок ресурсов. Если попытка

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

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

Слайд 25Метод предупреждения взаимных блокировок
Алгоритм 1. «Ожидание-отмена»:
Допускается только ожидание старой транзакцией.

Если более новая транзакция вынуждена ожидать освобождения блокировки, то она

откатывается и запускается заново. В результате наиболее старая транзакция проходит без отката, а более новая транзакция со временем становится наиболее старой.
Алгоритм 2. «Отмена-ожидание»:
Только более новые транзакции могут ожидать заверения более старой транзакции. Если более старая транзакция вынуждена ожидать освобождения блокировки, то она откатывается.


Метод предупреждения взаимных блокировокАлгоритм 1. «Ожидание-отмена»:Допускается только ожидание старой транзакцией. Если более новая транзакция вынуждена ожидать освобождения

Слайд 26Гранулированные захваты (уровни блокировок)
Уровни блокировок (выборочно):
RID – блокировка отдельной строки

(используется ID строки)
Page – блокировка на уровне страницы
Table – блокировка

таблицы
DB – блокировка базы данных
Чем крупнее элементы блокируемых данных, тем ниже уровень параллельности выполнения транзакций.

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



Гранулированные захваты (уровни блокировок)Уровни блокировок (выборочно):RID – блокировка отдельной строки (используется ID строки)Page – блокировка на уровне

Слайд 27Гранулированные захваты (уровни блокировок)
Блокировки намерения: устанавливаются вверх по иерархии от

блокируемого элемента для того, чтобы запретить другим транзакциям накладывать конфликтующие

блокировки на верхнем уровне. Поэтому при выполнении другой транзакции оказывается достаточным проверить блокировку намерения на верхнем уровне без проверки блокировок вниз по иерархии
Назначение: повышение производительности параллельной обработки данных и уменьшение вероятности возникновения взаимных блокировок.

Страница1

Таблица

Страница2

T1 (S)

T2 (X)

T2 (X)

не будет конфликта

будет конфликт

Гранулированные захваты (уровни блокировок)Блокировки намерения: устанавливаются вверх по иерархии от блокируемого элемента для того, чтобы запретить другим

Слайд 28Гранулированные захваты (уровни блокировок)
S – разделяемая блокировка. Автоматически распространяет вниз

по иерархии. Устанавливается для чтения данных
X – монопольная блокировка. Автоматически

распространяется вниз по иерархии. Устанавливается для изменения данных
IS – блокировка намерения для разделяемой блокировки. Автоматически распространяет вверх по иерархии.
IX – блокировка намерения для монопольной блокировки. Автоматически распространяется вверх по иерархии
SIX – разделяемая блокировка намерения для монопольной блокировки. Устанавливается явным образом на верхнем уровне иерархии при намерении читать все данные вниз по иерархии и изменять часть данных внизу иерархии. В один момент времени на ресурс может быть наложена только одна блокировка SIX.

Пример: на строку установлена X, на страницу таблицы установлена IX, а на таблицу установлена SIX. Другие транзакции могут установить на таблицу IS для чтения тех страниц, для которых не установлена IX, но установить IX или X они не могут.




Гранулированные захваты (уровни блокировок)S – разделяемая блокировка. Автоматически распространяет вниз по иерархии. Устанавливается для чтения данныхX –

Слайд 29Гранулированные захваты (уровни блокировок)
Запрашиваемая блокировка
Таблица совместимости блокировок

Гранулированные захваты (уровни блокировок)Запрашиваемая блокировкаТаблица совместимости блокировок

Слайд 30Гранулированные захваты (уровни блокировок)
T
P2
P1
R1
R1
Trans1 (S)
IS
IS
X нельзя
S можно
X нельзя
S можно
Trans2 (IX)
можно
IX
IX
X

нельзя
S можно
Пример 1

Гранулированные захваты (уровни блокировок)TP2P1R1R1Trans1 (S)ISISX нельзяS можноX нельзяS можноTrans2 (IX)можноIXIXX нельзяS можноПример 1

Слайд 31Гранулированные захваты (уровни блокировок)
T
P2
P1
R1
R1
Trans1 (X, SIX)
IX
IX
X нельзя (конфликт IX и

SIX на верхнем уровне)
S можно
X нельзя
S нельзя
Trans2 (S)
можно
SIX
IS
IS
Пример 2

Гранулированные захваты (уровни блокировок)TP2P1R1R1Trans1 (X, SIX)IXIXX нельзя (конфликт IX и SIX на верхнем уровне)S можноX нельзяS нельзяTrans2

Слайд 32Управление транзакциями
Явные транзакции:
BEGIN TRAN, COMMIT TRAN, ROLLBACK TRAN

Автоматические (по умолчанию):

каждая команда – отдельная транзакция
SET IMPLICIT_TRANSACTION OFF
Неявные транзакции: до ROLLBACK

TRAN или COMMIT TRAN. Началом транзакции является одна из команд: ALTER TABLE, CREATE, DELETE, DROP, INSERT, SELECT и некоторые другие
SET IMPLICIT_TRANSACTION ON

Управление транзакциямиЯвные транзакции:BEGIN TRAN, COMMIT TRAN, ROLLBACK TRANАвтоматические (по умолчанию): каждая команда – отдельная транзакцияSET IMPLICIT_TRANSACTION OFFНеявные

Слайд 33Вложенные транзакции

Вложенные транзакции

Слайд 34Метод временных отметок

Метод временных отметок

Слайд 35Оптимистический подход управления параллельным выполнение транзакций

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

Слайд 36Восстановление баз данных
Восстановление базы данных – это процесс возвращения базы

данных в корректное состояние, утраченное в результате отказа

Причины отказов:
Аварийное прекращение

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

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

Слайд 37Восстановление баз данных
Задачи восстановления БД:
Резервное копирование
Ведение журнала транзакций и изменений

БД
Создание контрольных точек (перенос изменений данных во вторичную память)

Резервное копирование:

сохранение базы данных целиком, либо сведений об изменениях (инкрементный режим) на автономных носителях большого объема
Восстановление баз данныхЗадачи восстановления БД:Резервное копированиеВедение журнала транзакций и изменений БДСоздание контрольных точек (перенос изменений данных во

Слайд 38Транзакции и восстановление
Основная идея
1) Журнал используется для определения состояния транзакций

на момент сбоя
2) Журнал содержит подтверждение фиксации данных.
3) До

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


Транзакции и восстановлениеОсновная идея1) Журнал используется для определения состояния транзакций на момент сбоя2) Журнал содержит подтверждение фиксации

Слайд 39Журнал транзакций
Журнал содержит следующие записи о транзакциях:
Идентификатор транзакции
Тип записи (начало

транзакции, завершение транзакции, обновление данных, удаление данных, вставка данных)
Идентификатор элемента

данных
Копия элемента данных ДО операции
Копия элемента данных ПОСЛЕ операции
Журнал содержит записи о контрольных точках. Контрольная точка – момент синхронизации оперативной памяти с журналом транзакций и основной областью (если фиксация). Все буферы СУБД принудительно записываются во вторичную память)

tс – контрольная точка (3-4 в час)
tf – момент сбоя
T1 – не завершена. Откат.
T2 – завершена и зафиксирована.
T3 – записана в журнал, но не полностью в основную область. Прогнать (повторно выполнить)
T4 – возможно не все данные попали в журнал. Откат
T5 – не завершена. Откат






Журнал транзакцийЖурнал содержит следующие записи о транзакциях:Идентификатор транзакцииТип записи (начало транзакции, завершение транзакции, обновление данных, удаление данных,

Слайд 40Метод восстановления с использованием отложенного обновления
При использовании метода восстановления с

отложенным обновлением, нормальная работа СУБД выполняется следующим образом: информация об

изменениях записывается сначала в журнал транзакций, обновления не заносятся в БД до тех пор, пока транзакция не выдаст команду фиксации результатов:
1) При запуске транзакции в журнал помещается запись «начало транзакции».
2) При выполнении любой операции записи, в журнал помещается информация об операции: тип операции, идентификатор изменяемого элемента, копия элемента ПОСЛЕ операции (копия элемента до операции не используется).
3) При завершении транзакции в журнал запись «транзакция завершена»
4) Если транзакция завершена с командой фиксации результатов, то данные из оперативной памяти переносятся на диска. Если транзакция завершается с откатом транзакции, то изменения на диск не переносятся.

Через определенные промежутки времени формируются контрольные точки.



Метод восстановления с использованием отложенного обновленияПри использовании метода восстановления с отложенным обновлением, нормальная работа СУБД выполняется следующим

Слайд 41Метод восстановления с использованием отложенного обновления
Файл БД
Файл журнала
Журнал в оперативной

памяти
Транзакция
«Начало транзакции»
«Конец транзакции»
Операции
«Начало транзакции»
«Конец транзакции»
Операции
Фиксация изменений
t1, t2, t3, t4 -

требуется откат

t1

t2

t3

t4

t5

t6

«Контрольная точка»

t5, t6 - требуется прогон

Сбой

t7

t7 – результаты фиксации гарантировано на диске

Метод восстановления с использованием отложенного обновленияФайл БДФайл  журналаЖурнал в  оперативной  памятиТранзакция«Начало транзакции»«Конец транзакции»Операции«Начало транзакции»«Конец

Слайд 42Метод восстановления с использованием отложенного обновления
Последовательность действий при восстановлении после

сбоя:
Журнал просматривается в обратном направлении до последней контрольной точки.
Если

для транзакции имеются обе записи «начало» «конец», то выполняется прогон транзакции. Т.е. изменения из записей об операциях переносятся в БД без повторных вычислений.
Если есть запись «начало», но нет записи «конец», то требуется откат и повторное выполнение. Откат, в данном случае, не требует никаких действий, т.к. данные в БД еще не попадали.
Если есть запись «начало транзакции» и «откат транзакции», то никакие действия не выполняются.
Метод восстановления с использованием отложенного обновленияПоследовательность действий при восстановлении после сбоя:Журнал просматривается в обратном направлении до последней

Слайд 43Метод восстановления с использованием немедленного обновления
Все изменения немедленно заносятся в

БД без ожидания завершения транзакции. Для законченных транзакций нужен прогон,

для не закончившихся – откат.

В журнал записывается следующая информация:
При запуске транзакции – запись «начало транзакции»
При выполнении операции – информация об операции, включая копию данных ДО выполнения и ПОСЛЕ выполнения.
Как только информация об операции помещается в журнал транзакций, изменения заносятся в буферы оперативной памяти.
Изменения в файлах происходят при разгрузке буферов.
При завершении транзакции в журнал помещается запись «конец транзакции»

Важно: строка об изменении данных помещается в журнал до физического изменения данных (протокол предварительной записи журнала).

При прогоне транзакции используются значения «после операции»
При откате транзакции в БД записываются значения из записи «до операции»
Метод восстановления с использованием немедленного обновленияВсе изменения немедленно заносятся в БД без ожидания завершения транзакции. Для законченных

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика