Skip to main content

Модель ACID для систем управления базами данных

SQL запросы. Четыре свойства транзакций в базах данных. Требования ACID в SQL. (Июнь 2026)

SQL запросы. Четыре свойства транзакций в базах данных. Требования ACID в SQL. (Июнь 2026)
Anonim

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

Определено ACID

Давайте рассмотрим каждую из этих характеристик в деталях:

  • валентность что изменения базы данных должны следовать правилу «все или ничего». Каждая транзакция называется «атомарной». Если одна часть транзакции выходит из строя, вся транзакция завершается с ошибкой. Крайне важно, чтобы система управления базами данных поддерживала атомный характер транзакций, несмотря на любую СУБД, операционную систему или аппаратный сбой.
  • консистенция что в базу данных будут записываться только достоверные данные. Если по какой-либо причине выполняется транзакция, которая нарушает правила согласованности базы данных, вся транзакция будет откатна, и база данных будет восстановлена ​​в соответствии с этими правилами. С другой стороны, если транзакция успешно выполняется, она берет базу данных из одного состояния, которое согласуется с правилами, в другое состояние, которое также согласуется с правилами.
  • изоляция требует, чтобы несколько транзакций, происходящих одновременно, не влияли на выполнение друг друга. Например, если Джо выдает транзакцию против базы данных одновременно с тем, что Мэри выдает другую транзакцию, обе транзакции должны работать в базе данных изолированным образом. База данных должна либо выполнить всю транзакцию Джо до исполнения Марии, либо наоборот. Это предотвращает транзакцию Джо от чтения промежуточных данных, полученных как побочный эффект части транзакции Мэри, которая в конечном итоге не будет привязана к базе данных. Обратите внимание, что свойство изоляции не гарантирует, какая транзакция будет выполняться первой - просто, что транзакции не будут мешать друг другу
  • долговечность гарантирует, что любая транзакция, переданная в базу данных, не будет потеряна. Долговечность обеспечивается за счет использования резервных копий базы данных и журналов транзакций, которые облегчают восстановление совершенных транзакций, несмотря на любые последующие сбои в программном обеспечении или аппаратном обеспечении.

Как ACID работает на практике

Администраторы баз данных используют несколько стратегий для обеспечения соблюдения ACID.

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

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

Другая стратегия называется двухфазная фиксация протокол, особенно полезный в распределенных системах баз данных. Этот протокол отделяет запрос на изменение данных на две фазы: фазу фиксации-фиксации и фазу фиксации. На этапе запроса все СУБД в сети, на которые влияет транзакция, должны подтвердить, что они получили ее и имеют возможность выполнять транзакцию. После получения подтверждения от всех соответствующих СУБД завершается этап фиксации, в котором данные фактически изменены.