Управление Транзакциями и Блокировками
Темы:
Обзор транзакций и блокировок
Транзакции
Свойства транзакции (ACID)
Основы Транзакций
Сбои транзакций
Проблемы с параллельным выполнением
Потерянные или «скрытые» обновления
Зависимость от незафиксированных данных («грязное чтение»)
Несогласованный анализ (неповторяемое чтение)
Чтение фантомов
Что такое уровни изоляции транзакций?
Уровни изоляции ANSI SQL-92
Что Такое Блокировки?
Параллельное выполнение
Журнал транзакций
Логическая структура журнала транзакций
Логическая структура журнала транзакций
Физическая структура журнала транзакций
Контрольные точки
Восстановление журнала транзакций
Восстановление транзакций
Управление транзакциями
Границы транзакции
Типы транзакций
Явные транзакции
Транзакции с автоматической фиксацией
Неявные транзакции
Вложенные транзакции
Управление блокировками
Блокировки
Основные типы блокировок
Архитектура транзакций и блокировок
734.50K
Категория: Базы данныхБазы данных

Управление транзакциями и блокировками. Модуль 12

1. Управление Транзакциями и Блокировками

Модуль 12

2. Темы:

Обзор Транзакций и Блокировок
Журнал транзакций
Управление Транзакциями
Управление Блокировками

3. Обзор транзакций и блокировок

С помощью транзакций и блокировок SQL
Server обеспечивает согласованность и
целостность всех БД, несмотря на
возникающие в системе ошибки.
Транзакция – это логическая единица
работы, состоящая из набора операторов,
таких, как SELECT или UPDATE.
Блокировки предотвращают конфликты,
запрещая пользователям чтение или
модификацию данных, находящихся
в процессе изменения другими пользователями
или
под влиянием незавершенных транзакций

4. Транзакции

Транзакция – последовательность задач, в
совокупности составляющих логическую
единицу работы
Любая операция DML –
SELECT, INSERT, UPDATE, DELETE
- является транзакцией
Транзакция SQL завершается одной из двух
инструкций:
COMMIT – действие всех ее инструкций
подтверждается после отправки на диск
ROLLBACK – откат, т.е. отмена действия всех ее
инструкций, БД возвращается в состояние перед
началом транзакции

5. Свойства транзакции (ACID)

Атомарность – в конце транзакции все ее
модификации либо исполняются
(регистрируются), либо отменяются
Целостность (согласованность) –
транзакция не должна нарушать
целостность БД
Изолированность – каждая транзакция
должна быть отделена от эффекта других
транзакций
Устойчивость (живучесть) – постоянство
транзакции независимо от системных сбоев

6. Основы Транзакций

Транзакция:
• последовательность операций, выполненных как
одна логическая единица работы
•должна обладать четырьмя свойствами (ACID)
• Atomicity (Атомарность)– должны быть выполнены
либо все входящие модификации, либо ни одна из них
• Consistency (Согласованность) - должна оставить все
данные в согласованном состоянии
A
C
• Isolation (Изоляция) - должны быть изолированы от
любых модификаций других транзакций
I
• Durability (стойкость, живучесть) – произведенные ею
действия сохраняются даже в случае системного сбоя
D

7. Сбои транзакций

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

8. Проблемы с параллельным выполнением

Потерянные или «скрытые»
обновления
Зависимость от незафиксированных
данных («грязное чтение»)
Несогласованный анализ
(неповторяемое чтение)
Чтение фантомов

9. Потерянные или «скрытые» обновления

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

10. Зависимость от незафиксированных данных («грязное чтение»)

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

11. Несогласованный анализ (неповторяемое чтение)

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

12. Чтение фантомов

Строки из диапазона строк, читаемого
во время транзакции, добавляются
или удаляются

13. Что такое уровни изоляции транзакций?

• Уровни изоляции транзакций контролируют
• Применение и типы блокировки при чтении данных
• Время удержания блокировок чтения
• Использование операции чтения ссылок на строки,
измененные другой транзакцией
• Выбор уровня изоляции транзакции не влияет на
блокировки, для защиты данных от модификаций
• Уровни - READ UNCOMMITTED, READ COMMITTED,
REPEATABLE READ, SERIALIZABLE и SNAPSHOT
Syntax
SET TRANSACTION ISOLATION LEVEL <level>;

14. Уровни изоляции ANSI SQL-92

Способность
Отбор
видеть
предложением
Возможность
видеть
Уровень
«грязное
Неповторяющееся
подтвержденные
WHERE
дополнительных
неподтвержденные
изоляции
чтение»
чтение другой
изменения другой
строк, внесенных
изменения другой
транзакции транзакции транзакции
Призрачные
строки
1/ Read Uncommited
(наименее жесткий)
допустимо
допустимо
допустимо
2/ Read Commited
(принят в SQL
по умолчанию)
запрещено
допустимо
допустимо
3/ Repeatable Read
запрещено
запрещено
допустимо
4/ Serializable
(наиболее жесткий)
запрещено
запрещено
запрещено
Snapshot
запрещено
запрещено
допустимо
Read Commited
Snapshot
запрещено
допустимо
допустимо

15. Что Такое Блокировки?

• Это механизм синхронизации доступа нескольких
пользователей к данным в то же время
• Два основных типа блокировки:
Read locks – Разрешить другим пользователям читать, но
не писать
Write locks – блокировать других от чтения или записи
• Может происходить Взаимоблокировка
• Блокировки предотвращения конфликтов обновления
Блокировка гарантирует, что транзакции сериализуются
Блокировка является автоматической
Блокировка позволяют одновременное использование
данных

16. Параллельное выполнение

• Оптимистическое
Используется, если конфликты из-за ресурсов возможны,
но МАЛОВЕРОЯТНЫ
Допускается выполнение явных транзакций без
блокирования каких-либо ресурсов
Проверка ресурсов на предмет возникновения
конфликтов выполняется только при попытке изменения
данных
• Пессимистическое
Операции считывания используют блокировку
считывания, запрещающую изменение данных
Другие пользователи блокируются до тех пор, пока
блокировка освобождается
Гарантируется успешное завершение транзакции, если не
возникнет ВЗАИМОБЛОКИРОВКА

17. Журнал транзакций

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

18. Логическая структура журнала транзакций

Последовательный набор записей
Каждая запись идентифицируется порядковым
номером в журнале – log sequence number, LSN
Записи журнала хранятся в порядке их
создания
Каждая запись журнала помечена
идентификатором транзакции, которой она
принадлежит
Все записи журнала, ассоциированные с одной
транзакцией, - двунаправленный список
При откате все исполняемые операторы тоже
регистрируются

19. Логическая структура журнала транзакций

В журнале транзакций регистрируются:
Начало и конец каждой транзакции
Каждая модификация данных (добавление,
обновление, удаление)
Выделение и освобождение каждого
экстента
Создание и удаление таблицы или индекса
В записях журнала о модификациях регистрируются
логические операции или образы модифицированных
данных до и после модификации (копии данных до и
после операции)

20. Физическая структура журнала транзакций

Располагается в одном или
нескольких физических файлах БД

21. Контрольные точки

Регистрируются в файле журнала
отметкой начала контрольной точки
В контрольных точках выполняется
сброс измененных страниц данных и
журнала из кэш-буфера текущей БД

22. Восстановление журнала транзакций

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

23. Восстановление транзакций

Необходимое действие
Не требуется
1
Накат
2
Откат
3
Накат
4
5
Контрольная точка
сбой системы
Откат

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

Запуск транзакций:
можно запускать транзакции в экземпляре компонента
SQL Server Database Engine как явные, автоматически
фиксируемые или неявные транзакции
Завершение транзакций:
Транзакции можно завершить инструкцией COMMIT или
ROLLBACK
Указание границ транзакции:
Можно идентифицировать время начала и окончания
транзакций компонента Database Engine с помощью
инструкций языка Transact-SQL

25. Границы транзакции

Для определения момента начала и окончания
транзакции используются
Операторы Transact-SQL:
BEGIN TRANSACTION
COMMIT TRANSACTION
ROLLBACK TRANSACTION
COMMIT WORK
ROLLBACK WORK
SET IMPLICIT_TRANSACTIONS
Функции и методы API (используются для
управления транзакциями в приложениях SQL
Server)

26. Типы транзакций

Явные – транзакция, начало и конец
которой определены явно
С автоматической фиксацией – режим
по умолчанию
Неявные

27. Явные транзакции

BEGIN TRANSACTION –
задает начальную точку явной транзакции для
соединения
COMMIT TRANSACTION или COMMIT WORK –
используется для успешного завершения транзакции,
если не возникла ошибка. Все выполненные
транзакцией модификации данных сохраняются в БД.
Задействованные ресурсы освобождаются
ROLLBACK TRANSACTION или ROLLBACK WORK используется для отмены транзакции, во время
которой возникла ошибка. Все данные,
модифицированные во время транзакции,
возвращаются в исходное состояние.
Задействованные ресурсы освобождаются

28. Транзакции с автоматической фиксацией

Режим с автоматической фиксацией
является режимом управления
транзакциями SQL Server по
умолчанию
В этом режиме каждый завершенный
оператор T-SQL либо фиксируется
либо откатывается
Ошибки компиляции и периода
выполнения

29. Неявные транзакции

После фиксации или отката текущей
транзакции SQL Server автоматически
начинает новую транзакцию –
транзакции генерируются непрерывно друг
за другом, образуя цепочку транзакций
ALTER TABLE
CREATE
DELETE
DROP
FETCH
GRANT
INSERT
OPEN
REVOKE
SELECT
TRUNCATE TABLE
UPDATE
SET IMPLICIT_TRANSACTIONS ON

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

Транзакции могут быть вложенными,
и если откатывается вложенная
транзакция, то все ожидающие ее
завершения (т.е. внешние) также
откатываются

31. Управление блокировками

Блокировка – это объект, с помощью
которого программы показывают
зависимость пользователя от ресурса

32. Блокировки

С помощью блокировок SQL Server
обеспечивает целостность и
согласованность БД
Блокировки запрещают
пользователям читать данные,
изменяемые другими
пользователями, а также не дают
изменять одни и те же данные
нескольким пользователям
одновременно

33. Основные типы блокировок

Блокировки чтения — позволяют
другим читать, но не записывать
Блокировки записи — запрещают
другим и читать, и записывать
SQL Server управляет блокировками
автоматически
Блокировки разрешают параллельное
использование данных

34. Архитектура транзакций и блокировок

С помощью транзакций и блокировок
SQL Server обеспечивает
согласованность и целостность всех
БД, несмотря на возникающие в
системе ошибки
English     Русский Правила