-
Notifications
You must be signed in to change notification settings - Fork 0
БД9. Управление транзакциями. Тупиковые ситуации и способы их обнаружения. Уровниизоляции. Поддержка блокировок в стандарте языка SQL.
Транзакция является логической единицей обработки в СУБД.
- Если транзакция выполнена успешно, все модификации данных, сделанные в течение транзакции, принимаются и становятся постоянной частью базы данных.
- Если в результате выполнения транзакции происходят ошибки и должна быть произведена отмена или выполнен откат, все модификации данных будут отменены.
Управление транзакциями в приложениях реализуется, главным образом, путем указания того, когда транзакция начинается и заканчивается. В системе должна быть возможность правильной обработки ошибок, прерывающих транзакцию до ее окончания.
Тупиковые ситуации и способы их обнаружения. [x]
Тупик — это состояние системы базы данных, имеющей две или более транзакций, когда каждая транзакция ожидает элемент данных, который блокируется какой-либо другой транзакцией.
О тупике можно указать циклом в графике ожидания. Это ориентированный граф, в котором вершины обозначают транзакции, а ребра — ожидания элементов данных.
Алгоритмы обнаружения тупиков могут использовать таймеры. Каждая транзакция связана с таймером, который установлен на период времени, в течение которого ожидается завершение транзакции. Если транзакция не завершается в течение этого периода времени, таймер отключается, указывая на возможную тупиковую ситуацию.
- Read uncommitted - самая плохая согласованность, самая высокая скорость выполнения транзакций. Каждая транзакция видит незафиксированные изменения другой транзакции.
- Read committed - параллельно исполняющиеся транзакции видят только зафиксированные изменения из других транзакций. Таким образом, данный уровень обеспечивает защиту от грязного чтения.
- Repeatable read - удаленные и измененные записи другой транзакцией не видны.
- Serializable - уровень, при котором транзакции ведут себя как будто ничего более не существует, никакого влияния друг на друга нет.
Блокировки [x]
Принудительное упорядочение транзакций обеспечивается с помощью механизма блокировок. Суть этого механизма в следующем: если для выполнения некоторой транзакции необходимо, чтобы некоторый объект базы данных (кортеж, набор кортежей, отношение, набор отношений,..) не изменялся непредсказуемо и без ведома этой транзакции, такой объект блокируется.
Основными видами блокировок являются:
- блокировка со взаимным доступом / S-блокировка / блокировкой по чтению.
- монопольная блокировка (без взаимного доступа) / X-блокировка / блокировка по записи. Этот режим используется при операциях изменения, добавления и удаления объектов.