Skip to content

БД9. Управление транзакциями. Тупиковые ситуации и способы их обнаружения. Уровниизоляции. Поддержка блокировок в стандарте языка SQL.

Winterpuma edited this page Jul 5, 2021 · 2 revisions

Транзакция является логической единицей обработки в СУБД.

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

Управление транзакциями

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

Тупиковые ситуации и способы их обнаружения. [x]

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

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

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

Уровни изолированности [x] [x]

  • Read uncommitted - самая плохая согласованность, самая высокая скорость выполнения транзакций. Каждая транзакция видит незафиксированные изменения другой транзакции.
  • Read committed - параллельно исполняющиеся транзакции видят только зафиксированные изменения из других транзакций. Таким образом, данный уровень обеспечивает защиту от грязного чтения.
  • Repeatable read - удаленные и измененные записи другой транзакцией не видны.
  • Serializable - уровень, при котором транзакции ведут себя как будто ничего более не существует, никакого влияния друг на друга нет.

Блокировки [x]

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

Основными видами блокировок являются:

  • блокировка со взаимным доступом / S-блокировка / блокировкой по чтению.
  • монопольная блокировка (без взаимного доступа) / X-блокировка / блокировка по записи. Этот режим используется при операциях изменения, добавления и удаления объектов.
Clone this wiki locally