Транзакции ACID и базы данных?
какова связь между ACID и транзакцией базы данных?
ACID дает транзакцию базы данных или это то же самое?
может кто-нибудь просветить эту тему.
9 ответов
кислоты - это набор свойств, которые вы хотите применить при изменении базы данных.
- атомарность
- последовательность
- изоляции
- долговечность
транзакция-это набор связанных изменений, который используется для достижения некоторых свойств кислоты. Транзакции-это инструменты для достижения свойств ACID.
атомарность означает, что вы можете гарантировать, что все транзакции происходит, или ничего из этого не делает; вы можете выполнять сложные операции как один блок, все или ничего, и сбой, сбой питания, ошибка или что-либо еще не позволит вам быть в состоянии, в котором произошли только некоторые из связанных изменений.
согласованность означает, что вы гарантируете, что ваши данные будут согласованными; ни одно из ограничений, которые вы имеете на связанные данные, никогда не будет нарушено.
изоляция означает, что одна транзакция не может прочитать данные из другой транзакции, которая еще не завершенный. Если две транзакции выполняются одновременно, каждая из них будет видеть мир так, как если бы они выполнялись последовательно, и если одна должна читать данные, записанные другой, ей придется подождать, пока другая не будет завершена.
долговечность означает, что после завершения транзакции гарантируется, что все изменения были записаны на прочный носитель (например, жесткий диск), и тот факт, что транзакция была завершена, аналогично записанный.
таким образом, транзакции являются механизмом гарантирования этих свойств; они представляют собой способ группировки связанных действий вместе, так что в целом группа операций может быть атомарной, давать последовательные результаты, быть изолированной от других операций и быть надежно записана.
ACID являются желательными свойствами любого механизма обработки транзакций.
СУБД - это (если это хорошо) особый вид механизма обработки транзакций, который предоставляет, как правило, в очень большой степени, но не совсем полностью, эти свойства.
но существуют другие движки, которые также могут раскрывать эти свойства. Вид программного обеспечения, который раньше назывался "TP monitors", является примером (в настоящее время эквивалентом в основном веб-серверов).
такой TP мониторы могут получить доступ к ресурсам, отличным от СУБД (например, к принтеру), и по-прежнему гарантировать ACID своим пользователям. В качестве примера того, что ACID может означать, когда принтер участвует в транзакции:
- атомарность: весь документ печатается или вообще ничего
- согласованность: в конце транзакции подача бумаги расположена в верхней части страницы
- изоляция: никакие два документа не перепутать во время печати
- стойкость: принтер может гарантируйте, что это не была" печать " с пустыми картриджами.
кислотные свойства очень старая и важная концепция теории баз данных. Я знаю, что вы можете найти много сообщений по этой теме, но все же я хотел бы начать делиться ответом на это, потому что это очень важная тема РСУБД.
система баз данных играет с большим количеством различных типов транзакций, где все транзакции имеют определенную характеристику. Эта характеристика известна кислотными свойствами. Свойства ACID принимают grantee для всех транзакций базы данных для выполнения всех задачи.
атомарность: либо совершить все, либо ничего.
согласованность: сделайте согласованную запись с точки зрения проверки всех правил и ограничений транзакции.
изоляция: убедитесь, что две транзакции не знают друг друга.
долговечность: совершенные данные хранятся вечно. ссылка взята из этой статьи:
Я немного изменил пример принтера, чтобы сделать его более объяснимым
1 документ, который содержал 2 страницы, был отправлен на принтер
сделки - документ отправлен на принтер
- атомарность - принтер печатает 2 страницы документа или нет
- последовательность - принтер печатает половину страницы и страницы застревает. Принтер перезагружается и печатает 2 страницы, все содержимое
- изоляции - в то время как было слишком много отпечатков - принтер печатает правильное содержимое документа
- долговечность - пока печатающ, была сила вырезать - принтер снова печатает документы без ошибок
надеюсь, это поможет кому-то получить представление о концепции кислоты
цитата Википедия:
ACID (атомарность, согласованность, изоляция, долговечность) - это набор свойств, гарантирующих надежную обработку транзакций базы данных.
СУБД, поддерживающая транзакции, будет стремиться поддерживать все эти свойства - любые коммерческие СУБД (а также несколько СУБД с открытым исходным кодом) обеспечивают полную поддержку ACID - хотя это часто возможно (например, с различными уровнями изоляции в MSSQL), чтобы уменьшите кислотность-таким образом теряя гарантию полностью транзакционного поведения.
[серый] представил свойства ACD для транзакции в 1981 году. В 1983 году [Haerder] добавил свойство изоляции. На мой взгляд, свойства ACD будут иметь более полезный набор свойств для обсуждения. Одна интерпретация атомарности (что транзакция должна быть атомарной, как видно из любого клиента в любое время) фактически подразумевает свойство изоляции. Свойство "isolation" полезно, когда транзакция не изолированный; когда свойство изоляции расслаблено. В ANSI SQL speak: если уровень изоляции слабее, то сериализуемый. Но когда уровень изоляции сериализуем, свойство изоляции на самом деле не представляет интереса.
Я написал больше об этом в блоге: "кислота не имеет смысла".
http://blog.franslundberg.com/2013/12/acid-does-not-make-sense.html
[Серый] Концепция Транзакции, Джим Грей, 1981. http://research.microsoft.com/en-us/um/people/gray/papers/theTransactionConcept.pdf
[Haerder] принципы транзакционно-ориентированного восстановления базы данных, Haerder and Reuter, 1983. http://www.stanford.edu/class/cs340v/papers/recovery.pdf
какова связь между ACID и транзакцией базы данных?
в реляционной базе данных каждая инструкция SQL должна выполняться в области транзакции.
без явного определения границ транзакции база данных будет использовать неявную транзакцию, которая обертывается вокруг каждого отдельного оператора.
неявная транзакция начинается до выполнения инструкции и заканчивается (фиксация или откат) после инструкция выполняется. Неявный режим транзакции обычно известен как autocommit.
Как поясняется в в этой статье, транзакция представляет собой набор операций чтения/записи, выполняемых успешно, только если все содержащиеся операции выполнены успешно.
по сути транзакция характеризуется четырьмя свойствами (обычно называют Кислота):
- атомарность
- последовательность
- изоляции
- долговечность
ACID дает транзакцию базы данных или это то же самое?
для системы реляционной базы данных это верно, потому что стандарт SQL указывает, что транзакция должна предоставлять гарантии ACID:
атомарность
атомарность берет отдельные операции и превращает их в единица работы "Все или ничего", успешная тогда и только тогда, когда все содержащиеся операции успешны.
транзакция может инкапсулировать изменение состояния (если оно не доступно только для чтения). Транзакция всегда должна оставлять систему в согласованном состоянии, независимо от того, сколько параллельных транзакций чередуется в любой момент времени.
последовательность
согласованность означает, что ограничения вводятся для каждой транзакции. Это означает, что все ключи, данные типы, проверки и триггер успешны, и нарушение ограничений не запускается.
изоляции
транзакции требуют механизмов управления параллелизмом, и они гарантируют правильность даже при чередовании. Изоляция приносит нам пользу, скрывая незафиксированные изменения состояния от внешнего мира, поскольку неудачные транзакции никогда не должны коррумпировать состояние системы. Изоляция достигается путем управления параллелизмом с использованием пессимистической или оптимистической блокировки механизмы.
долговечность
успешная транзакция должна постоянно изменять состояние системы, и перед ее завершением изменения состояния записываются в журнал сохраненных транзакций. Если наша система внезапно пострадала от сбоя системы или отключения электроэнергии, то все незавершенные совершенные транзакции могут быть воспроизведены.
для получения более подробной информации о долговечности и журналов, проверить этот статья.
свойства ACID транзакций В контексте обработки транзакций акроним ACID относится к четырем ключевым свойствам транзакции: атомарность, согласованность, изоляция и долговечность.
атомарность Все изменения данных выполняются как единая операция. То есть все изменения выполняются, или ни одно из них не выполняется. Например, в приложении, которое переводит средства с одного счета на другой, свойство atomicity гарантирует, что при дебетовании успешно с одного счета, соответствующий кредит производится на другой счет. Консистенция Данные находятся в согласованном состоянии, когда транзакция начинается и когда это заканчивается. Например, в приложении, которое переводит средства с одного счета на другой, свойство consistency гарантирует, что общая стоимость средств на обоих счетах одинакова в начале и в конце каждой транзакции. Изоляция Промежуточное состояние транзакции невидимо для других транзакций. В результате, транзакции, выполняемые одновременно, представляются сериализованными. Например, в приложении, которое переводит средства с одного счета на другой, свойство изоляции гарантирует, что другая транзакция видит переведенные средства на одном или другом счете, но не в обоих или ни в одном. Прочность После успешного завершения транзакции изменения данных сохраняются и не отменяются даже в случае сбоя системы. Например, в приложении, которое переводит средства с одного счета на другой другое свойство durability гарантирует, что изменения, внесенные в каждую учетную запись, не будут отменены.
транзакция может быть определена как набор задач, которые считаются минимальной единицей обработки. Каждую минимальную единицу обработки нельзя разделить дальше.
все транзакции должны содержать четыре свойства, которые обычно известны как свойства ACID. Я. E ACID-это группа свойств любой транзакции.
- атомарность :
- последовательность
- изоляции
- долговечность