Завершение сеанса
Когда сеанс завершается (по желанию клиента, либо вследствие ошибки), все значения параметров теряются.
Все ожидающие транзакции неявно подтверждаются при нормальном завершении сессии, и откатываются, если сеанс был прерван в результате ошибки.
Сессия может быть прервана администратором БД – синтаксис операции свой в каждой конкретной СУБД.
Осиротевшие сеансы образуются, если инициировавшее их приложение завершается сбоем, не закрыв открытый им сеанс.
Транзакции (1)
Транзакция – один из механизмов, реализованных в
SQL с целью поддержания целостности и согласованности данных.
Дополняют концепцию сеансов дополнительным уровнем гранулярности. Разбивают операции в сессии на логические единицы и позволяют выполнять их поэтапно.
Концепция транзакции изначально заложена в стандарте SQL и постепенно развивалась в новых версиях. Детали этого механизма отличаются в отдельных реализациях.
Транзакции (2)
Транзакции являются одной из самых важных концеп-
ций, необходимой для построения надежных БД (обеспечивают целостность данных в любых ситуациях).
Транзакция представляет собой одну или несколько инструкций SQL, которые либо успешно завершаются, либо отменяются как единое целое. Разработчик сам определяет, какие операции составят транзакцию.
Структурные модификации объектов БД, выполняемые инструкциями DDL, не являются транзакционными, т.е. не допускают отката операции (неявно – COMMIT).
Варианты завершения транзакций
Фиксация транзакции обеспечивает запись на диск изменений, сделанных в процессе выполнения транзакции.
Откат транзакции обеспечивает аннулирование всех изменений, сделанных операторами в теле транзакции
Классическая транзакционная машина – банкомат
После аутентификации и ввода снимаемой со счета суммы инициируется транзакция:
банкомат проверяет, достаточно ли денег на счете;
банкомат вычитает деньги со счета;
банкомат выдает купюры;
если какое-то действие завершается неудачей, транзакция откатывается.
В любой момент пользователь может прервать операцию, после чего выполняется полный откат транзакции.