Транзакции — это одно из средств, отличающих базу данных от файловой системы. Если вы находитесь в процессе записи файла и операционная система терпит крах, этот файл, скорее всего, будет поврежден. Правда, существуют файловые системы с ведением журналов, которые могут восстановить ваш файл до некоторого момента времени. Однако если вам нужно обеспечить синхронизацию двух файлов, то система не может помочь вами в этом — если вы обновите один файл, и в системе произойдет сбой прежде, чем вы завершите обновление второго, то вы получите несинхронизированные файлы. В том и состоит основное назначение транзакций базы данных — они переводят базу из одного согласованного состояния в другое. В этом заключается их работа. Когда вы фиксируете работу в базе данных, то можете быть уверены, что все разнообразные правила и проверки, защищающие целостность базы, реализованы. В предыдущей главе мы говорили о транзакциях в терминах управления параллелизмом и о том, как в результате использования многоверсионной согласованной по чтению модели Oracle транзакции Oracle могут обеспечить согласованность данных в любое время, в условиях высоко конкурентного доступа к данным. Транзакции в Oracle удовлетворяют всем требуемым характеристикам ACID. Аббревиатура ACID означает:
атомарность (atomicity) — выполняется либо вся транзакция целиком, либо она целиком не выполняется;
согласованность (consistency) — транзакция переводит базу данных из одного согласованного состояния в другое;
изоляция (isolation) — эффект от транзакции не виден другим транзакциям до тех пор, пока она не будет зафиксирована;
устойчивость (durability) — как только транзакция зафиксирована, она остается постоянной.
В прошлой главе мы обсуждали, как Oracle обеспечивает согласованность и изоляцию. Здесь мы сосредоточим внимание на концепции атомарности и ее применении в СУБД Oracle.
В настоящей главе мы поговорим о влиянии атомарности и о том, как она касается операторов SQL в Oracle. Мы расскажем об операторах управления транзакциями, таких как COMMIT, SAVEPOINT и ROLLBACK, и обсудим способы обеспечения ограничений целостности в транзакциях. Также мы рассмотрим некоторые плохие привычки, связанные с транзакциями, которые вы могли приобрести, разрабатывая приложения для других СУБД. Речь пойдет также о распределенных транзакциях и двухфазной фиксации (2PC). И последняя тема, которая будет поднята здесь — это автономные транзакции: что они собой представляют и какую играют роль.
< Предыдущая |
---|