Как работают транзакции ACID и базы данных? - PullRequest
145 голосов
/ 18 сентября 2010

Какова связь между ACID и транзакцией базы данных?

Предоставляет ли ACID транзакцию базы данных или это одно и то же?

Может кто-нибудь просветить эту тему.

Ответы [ 8 ]

298 голосов
/ 18 сентября 2010

ACID - это набор свойств, которые вы хотели бы применить при изменении базы данных.

  • Атомарность
  • Последовательность
  • Изоляция
  • Долговечность

Транзакция - это набор связанных изменений, которые используются для достижения некоторых свойств ACID. Транзакции являются инструментами для достижения свойств ACID.

Атомность означает, что вы можете гарантировать, что вся транзакция произойдет, или ничего из этого не произойдет; Вы можете выполнять сложные операции как единое целое, все или ничего, а сбой, сбой питания, ошибка или что-либо еще не позволит вам находиться в состоянии, в котором произошли только некоторые связанные изменения.

Согласованность означает, что вы гарантируете, что ваши данные будут согласованы; ни одно из ограничений, связанных с вашими данными, не будет нарушено.

Изоляция означает, что одна транзакция не может прочитать данные из другой транзакции, которая еще не завершена. Если две транзакции выполняются одновременно, каждая из них увидит мир так, как будто они выполняются последовательно, и если одна из них должна прочитать данные, записанные другой, ей придется ждать, пока другая не будет завершена.

Долговечность означает, что после завершения транзакции гарантируется, что все изменения были записаны на долговременный носитель (например, на жесткий диск), а также тот факт, что транзакция была завершена. *

Итак, транзакции являются механизмом гарантирования этих свойств; они представляют собой способ группировки связанных действий таким образом, что в целом группа операций может быть атомарной, давать согласованные результаты, быть изолированной от других операций и иметь долговременную запись.

34 голосов
/ 18 сентября 2010

ACID - это желательные свойства любого механизма обработки транзакций.

СУБД - это (если она хороша) особый вид механизма обработки транзакций, который, как правило, в очень большой степени, но не совсем, раскрывает эти свойства.

Но существуют и другие движки, которые также могут выставлять эти свойства. Тип программного обеспечения, который раньше назывался «TP-мониторы», является наглядным примером (в настоящее время его эквивалентом в основном являются веб-серверы).

Такие мониторы TP могут получать доступ к ресурсам, отличным от СУБД (например, к принтеру), и при этом гарантировать ACID своим пользователям. В качестве примера того, что может означать ACID, когда принтер участвует в транзакции:

  • Атомность: печатается весь документ или вообще ничего
  • Согласованность: в конце транзакции подача бумаги располагается в верхней части страницы
  • Изоляция: при печати не перепутываются два документа
  • Долговечность: принтер может гарантировать, что он не "печатал" с пустыми картриджами.
16 голосов
/ 18 сентября 2017

Я немного изменил пример принтера, чтобы сделать его более понятным

1 документ, содержащий 2 страницы, был отправлен на принтер

Транзакция - документ отправлен на принтер

  • атомарность - принтер печатает 2 страницы документа или не печатает
  • согласованность - принтер печатает половину страницы, и страница застревает. Принтер перезагружается и печатает 2 страницы со всем содержимым
  • изоляция - при слишком большом количестве распечаток - принтер печатает правильное содержимое документа
  • долговечность - во время печати возникла сила cut-принтер снова печатает документы без ошибок

Надеюсь, это поможет кому-то освоить концепцию ACID

10 голосов
/ 21 мая 2015

Свойства ACID - очень старая и важная концепция теории баз данных. Я знаю, что вы можете найти много постов на эту тему, но все же я хотел бы начать делиться ответом по этому вопросу, потому что это очень важная тема СУРБД.

Система баз данных играет с множеством различных типов транзакций, где все транзакции имеют определенные характеристики. Эта характеристика известна как свойства ACID. ACID Properties принимает все транзакции базы данных для выполнения всех задач.

Атомность: либо совершить все, либо ничего.

Согласованность: создание непротиворечивой записи с точки зрения проверки всех правил и ограничений транзакции.

Изоляция: убедитесь, что две транзакции не знают друг друга.

Долговечность: зафиксированные данные хранятся вечно. Ссылка взята из этой статьи:

9 голосов
/ 01 апреля 2018

Какова связь между ACID и транзакцией базы данных?

В реляционной базе данных каждый оператор SQL должен выполняться в области транзакции.

Без явного определения границ транзакции база данных будет использовать неявную транзакцию, которая обернута вокруг каждого отдельного оператора.

Неявная транзакция начинается до выполнения инструкции и заканчивается (фиксация или откат) после выполнения инструкции.Режим неявной транзакции обычно известен как автокоммит.

Как объяснено в этой статье , транзакция представляет собой набор операций чтения / записи, выполняющихся успешно только в том случае, если все содержащиеся в них операции выполняются успешно.1014 *Atomicity

По своей сути транзакция характеризуется четырьмя свойствами (обычно называемыми ACID):

  • Атомность
  • Согласованность
  • Изоляция
  • Долговечность

Предоставляет ли ACID транзакцию базы данных или это то же самое?

Для реляционной базы данныхсистема, это правда, потому что стандарт SQL указывает, что транзакция должна обеспечивать гарантии ACID:

атомарность

атомарность принимает отдельные операции и превращает их в единицу работы "все или ничего",успешное выполнение в том и только в том случае, если все содержащиеся в нем операции завершаются успешно.

Транзакция может инкапсулировать изменение состояния (если только оно не доступно только для чтения).Транзакция должна всегда оставлять систему в согласованном состоянии, независимо от того, сколько параллельных транзакций чередуется в любой момент времени.

Согласованность

Согласованность означает, что ограничения применяются для каждой совершенной транзакции.Это означает, что все ключи, типы данных, проверки и триггеры успешны, и нарушение ограничений не инициируется.

Изоляция

Транзакции требуют механизмов контроля параллелизма, и они гарантируют корректность даже при перемежении.Изоляция дает нам преимущество скрывать незавершенные изменения состояния от внешнего мира, так как неудачные транзакции никогда не должны портить состояние системы.Изоляция достигается за счет управления параллелизмом с использованием пессимистических или оптимистических механизмов блокировки.

Долговечность

Успешная транзакция должна окончательно изменить состояние системы, и до ее завершения изменения состояния записываются впостоянный журнал транзакций.Если на нашу систему неожиданно повлиял сбой или перебои в подаче электроэнергии, то все незаконченные совершенные транзакции могут быть воспроизведены.

enter image description here

Подробнее о долговечностии журнал повторов, посмотрите эту статью .

4 голосов
/ 18 сентября 2010

Цитировать Википедия :

ACID (атомарность, согласованность, изоляция, долговечность) - это набор свойств, гарантирующих надежную обработку транзакций базы данных.

СУБД, поддерживающая транзакции, будет стремиться поддерживать все эти свойства - любая коммерческая СУБД (а также несколько СУБД с открытым исходным кодом) обеспечивает полную «поддержку» ACID - хотя это часто возможно (например, с различными уровнями изоляции).в MSSQL), чтобы уменьшить ACIDness - таким образом теряя гарантию полностью транзакционного поведения.

2 голосов
/ 13 декабря 2013

[Грей] ввел свойства ACD для транзакции в 1981 году. В 1983 году [Haerder] добавил свойство Isolation.По моему мнению, свойства ACD будут иметь более полезный набор свойств для обсуждения.Одна интерпретация атомарности (что транзакция должна быть атомарной, как видно из любого клиента в любое время) фактически подразумевает свойство изоляции.Свойство «изоляция» полезно, когда транзакция не изолирована;когда свойство изоляции ослаблено.В ANSI SQL говорят: если уровень изоляции слабее, то SERIALIZABLE.Но когда уровень изоляции SERIALIZABLE, свойство изоляции на самом деле не представляет интереса.

Я написал об этом больше в посте блога: "ACID не имеет смысла".

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

[Хейдер] Принципы транзакционно-ориентированного восстановления баз данных, Хейдер и Рейтер, 1983. http://www.stanford.edu/class/cs340v/papers/recovery.pdf

0 голосов
/ 14 сентября 2017

Транзакция может быть определена как набор задач, которые рассматриваются как минимальная единица обработки. Каждая минимальная единица обработки не может быть разделена дальше.

Все транзакции должны содержать четыре свойства, которые обычно называются свойствами ACID. т.е. ACID - это группа свойств любой транзакции.

  • Атомность:
  • Последовательность
  • Изоляция
  • Долговечность
...