Блокировки¶
Блокировка - это отметка о захвате объекта в транзакции, которая позволяет устанавливать к ней ограниченный доступ с целью поддержания целостности данных.
Виды блокировок¶
Оптимистичная¶
При оптимистичной блокировке именно реальной блокировки не происходит, вместо этого используется версионирование данных. Если во время транзакции она изменяет данные, которые были изменены после начала транзакции, то текущая транзакция прерывается с исключением и её необходимо запускать снова.
Пессимистичная¶
При пессимистичной блокировке, происходит ограничение на доступ к затронутым данным из других транзакций. Как правило, бывают блокировки двух типов - на чтение и модификацию данных, что обеспечивает гарантированную непротиворечивость результатов.
Область действия блокировок¶
Есть блокировки по отдельным строкам, есть общие блокировки (на все строки, таблицу или страницу) и предикатные блокировки - это блокировки по указанному условию (например блокировка по диапазону ключей при поиске по индексу).
Виды блокировок по доступу¶
Существует 2 типа блокировок доступа - совместная (shared) и исключительная (exclusive).
- Совместная накладывается на объект, когда есть уверенность в том, что операции которые будут выполняться на данных безопасны и не имеют сайд-эффектов. Такая блокировка используется для операций чтения.
- Исключительная накладывается на объект, если транзакция изменяет этот объект. Во время этой блокировки только текущая транзакция может иметь доступ к этому объекту, и никакая другая.