ACID
- Atomicity (атомарность)
- Consistency (согласованность)
- Isolation (изоляция)
- Durability (долговечность) Транзакция Программисты ответственны за начало и завершение транзакций, которые осуществляют логическую целостность данных (согласованность) За управлением транзакциями в MS SQL Server отвечает компонент Database Engine. Обеспечивает следующее:
- Блокирующие средства, которые обеспечивают изоляцию транзакций
- Регистрирующие средства, гарантирующие длительность транзакций. В случае сбой, движок посмотрит в журнал и откатит все незавершенные в момент сбоя транзакции
- Предоставляет функции управления транзакциями для разработчиков Для явного начала транзакции есть инструкции
BEGIN TRANSACTION;Для завершения транзакции и фиксации изменений используется инструкция
COMMIT TRANSACTION;При возникновении ошибки (и если она не обработана), транзакция откатывается.
Транзакцию можно откатить явно инструкцией
ROLLBACK TRANSACTION;После коммита, ресурсы, заблокированные транзакцией высвобождаются

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

Аномалии
Аномалия одновременного выполнения
Стандарт SQL описывает 4 вида аномалий
- Потерянное обновление (lost update)
возникает, когда две транзакции читают одну и ту же строку таблицы, затем одна из них обновляет эту строку, после чего вторая обновляет эту же строку, не учитывая изменений, сделанных первой транзакцией. В итоге первая теряет свое обновление, когда снова читает данные
- Грязное чтение (dirty read) и Read Uncommitted
Аномалия грязного чтения (dirty read) возникает, когда транзакция читает еще не зафиксированные изменения, сделанные другой транзакцией.
- Неповторяющееся чтение (non-repeatable read) и Read Committed
Аномалия неповторяющегося чтения (non-repeatable read) возникает, когда транзакция читает одну и ту же строку два раза, а в промежутке между чтениями вторая транзакция изменяет (или удаляет) эту строку и фиксирует изменения. Тогда первая транзакция получит разные результаты.
- Фантомное чтение и Repeatable Read
Аномалия фантомного чтения (phantom read) возникает, когда одна транзакция два раза читает набор строк по одинаковому условию, а в промежутке между чтениями другая транзакция добавляет строки, удовлетворяющие этому условию, и фиксирует изменения. Тогда первая транзакция получит разные наборы строк
Есть 2 способа управления параллелизмом:
- Пессимистическое
- Оптимистическое
Пессимистическое управление параллелизмом

Оптимистическое управление параллелизмом
