Система транзакций MySQL полностью соответствует стандарту ACID по безопасности транзакций для таблиц типа InnoDB и BDB. В более старых типах таблиц, таких как MyISAM, механизм транзакции не предусмотрен. Транзакции в таких системах можно реализовать с помощью явной блокировки таблиц (подробнее об этой процедуре можно узнать в разделе "Блокировка таблиц как замена транзакций").
Термин ACID является аббревиатурой, определяющей четыре основных условия, которым должны удовлетворять реляционные СУБД, поддерживающие работу с транзакциями. Для того чтобы удовлетворять требованиям ACID, реляционная СУБД должна обладать следующими характеристиками: атомарность (atomicity), целостность (consistency), изолированность (isolation) и живучесть (durability).
Атомарность
Атомарность означает, что каждая транзакция рассматривается как единый и неделимый блок. При условии, что транзакция состоит из двух или более задач, транзакция считается успешной, если все входящие в нее операторы завершаются успешно. В случае если транзакция завершится ошибкой, система должна быть возвращена в исходное состояние.
Обратимся к предыдущему примеру с фондовой биржей. Здесь атомарность означает следующее: для того чтобы транзакция считалась завершенной, продажа акций маклером A и покупка их маклером B не могут проходить независимо друг от друга. Аналогично, в примере с наймом служащих атомарность означает, что невозможно добавить служащего в базу данных без создания соответствующей записи в списочном составе и журнале учета ведомости отдела.
Атомарное выполнение представляет собой решение "все или ничего". При атомарном выполнении, если какой-либо из операторов в транзакции по какой-либо причине не будет выполнен, всем предыдущим операторам будет дан откат для того, чтобы не была нарушена целостность базы данных. Это очень важно для реальных приложений целевого назначения (какими бывают финансовые системы), выполняющие ввод или изменение данных и предлагающие высокую степень защиты от скрытых потерь данных.
Целостность
Целостность поддерживается, если каждая транзакция после своего завершения оставляет систему в целостном состоянии независимо от успешности или неуспешности завершения транзакции. Опять вернемся к предыдущему примеру с фондовой биржей. Здесь целостность означает, что вычитание со счета продавца должно привести к равносильному начислению на счет покупателя. Если транзакция уменьшает счет маклера A на 400 акций, увеличивая при этом счет маклера B на 300 акций, ограничение по целостности будет нарушено, т.к. общее количество акций в системе изменится. Аналогично, свойство целостности необходимо обеспечить при удалении служащего из системы: удаление всех данных, имеющих отношение к этому служащему, включая данные в общей ведомости.
В MySQL целостность обеспечивается, прежде всего, механизмами регистрации MySQL, записывающими все изменения в базе данных и прослеживающими аудиторский след для восстановления транзакции. Если система отказывает в процессе выполнения транзакции, процедура восстановления MySQL определит успешность завершения транзакции по регистрационным журналам и при необходимости сделает откат. Таким образом, свойство целостности гарантирует, что ни в какой момент времени не должно быть незаконченной транзакции.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. Транзакции и свойства ACID
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Транзакции | Все о MySQL. Транзакции и свойства ACID. Продолжение. |