Транзакции
Транзакции — это механизмы обеспечения целостности баз данных, особенно в случаях ошибок или отказа сервера.
Определения транзакций. Прежде всего, дадим определение термину транзакция. Транзакция — это запрос или набор запросов, который гарантированно будет выполнен в базе данных полностью, либо не будет не выполнен вовсе. В результате база данных сохраняет свою целостность независимо от успешности завершения транзакции.
Чтобы понять, почему эта возможность может оказаться настолько важной, рассмотрим банковскую базу данных. Представим себе ситуацию, в которой нужно выполнить перевод денег с одного счета на другой. Это действие предполагает снятие денег с одного счета на другой. Это действие предполагает снятие денег с одного счета и помещение их на другой, для чего потребуется выполнение, как минимум двух запросов. Что произойдет, если деньги будут сняты с одного счета, а напряжение питания пропадет прежде, чем они будут помещены на другой счет? Означает ли это, что деньги просто «исчезнут» ?
Возможно, вы сталкивались с понятием соответствия ACID. ACID (атомарность, целостность, изоляция, постоянство) представляет собой способ описания четырех требований, которым должны удовлетворять транзакции:
- · Атомарность. Транзакция должна быть атомарной, то есть либо выполняться полностью, либо не выполняться вообще.
- · Целостность. Транзакция должна оставлять базу данных в целостном состоянии.
- · Изоляция. Незавершенные транзакции не должны быть видимы другими пользователями базы данных, то есть до тех пор, пока они не завершены, транзакции должны оставаться изолированными.
- · Постоянство. После сохранения в базе данных, результаты выполнения транзакции должны быть долговременными или постоянными.
Транзакция, результат выполнения которой записан в базу данных, называют подтвержденной. Транзакция, результат выполнения которой не записан в базу данных — то есть база данных возвращена в то состояние, каком она была до начала выполнения транзакции — называют откатанной транзакцией.