Нередко для изменения таблицы базы данных необходимо ввести несколько команд. В случае многопользовательской базы данных эти команды могли бы перемешаться с командами других пользователей, и поэтому команды одного пользователя целесообразно группировать. В однопользовательской базе группировка также целесообразна, потому что пользователь может пожелать вернуться к предыдущему состоянию базы.
Группа команд, объединенных общим функциональным действием, называется транзакцией. Транзакция – это логическая единица работы системы. Незавершенную транзакцию можно отменить. Отмену транзакции и восстановление состояния называют откатом транзакции.
Началом транзакции считается либо начало сеанса с СУБД, либо конец предыдущей транзакции. Транзакция завершается или отменяется специальными командами.
Транзакции характеризуют четырьмя классическими свойствами:
атомарности, согласованности, изолированности, долговечности – ACID (Atomicity, Consistency, Isolation, Durability). Иногда традиционные транзакции называют ACID-транзакциями.
Свойство атомарности выражается в том, что транзакция должна быть выполнена в целом или не выполнена вовсе.
Свойство согласованности гарантирует, что по мере выполнения транзакций данные переходят из одного согласованного состояния в другое.
Свойство изолированности означает, что конкурирующие за доступ к базе данных транзакции физически обрабатываются последовательно, изолированно друг от друга.
Свойство долговечности трактуется следующим образом: если транзакция завершена успешно, то те изменения в данных, которые были ею произведены, не могут быть потеряны ни при каких обстоятельствах (даже в случае последующих ошибок).
Если две транзакции A и B выполняются параллельно, то СУБД полагает, что результат будет одинаковым независимо от того, какая транзакция выполняется первой. Эта дисциплина выполнения известна как сериализация транзакций.