Блокировки в базе данных — это механизмы, используемые для контроля конкурентного доступа к данным. Они гарантируют целостность и согласованность данных при одновременной работе нескольких пользователей или процессов.
Основные типы блокировок:
- Разделяемая блокировка (Shared Lock / Read Lock): Позволяет нескольким транзакциям одновременно считывать один и тот же ресурс. Не мешает другим транзакциям накладывать разделяемые блокировки, но препятствует наложению эксклюзивных блокировок.
- Эксклюзивная блокировка (Exclusive Lock / Write Lock): Позволяет только одной транзакции изменять ресурс в данный момент времени. Препятствует наложению любых других блокировок (разделяемых или эксклюзивных) на этот ресурс.
Уровни блокировок:
- Блокировка на уровне строки: Блокирует отдельную строку. Обеспечивает высокую степеньConcurrency, но может создавать большой объем накладных расходов.
- Блокировка на уровне страницы: Блокирует страницу данных, содержащую несколько строк. Компромисс междуConcurrency и накладными расходами.
- Блокировка на уровне таблицы: Блокирует всю таблицу. Низкий уровеньConcurrency, но минимальные накладные расходы. Использование ограничено, например, при выполнении масштабных операций изменения схемы.
Механизмы управления блокировками:
- Двухфазная блокировка (Two-Phase Locking - 2PL): Протокол, гарантирующий сериализуемость транзакций. Состоит из двух фаз: фазы роста (транзакция может только запрашивать блокировки) и фазы сокраще