Блокировки. Механизм Блокировок

Рубрика: Управление Параллелизмом Данных

  • Препятствуют, чтобы несколько сеансов изменили те же самые данные одновременно

  • Создаются автоматически на самом низком возможном уровне для данного оператора

  • Не нарастают

Блокировки

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

Транзакции могут заблокировать отдельные строки данных, несколько строк или даже целые таблицы. База данных Oracle поддерживает и ручные и автоматическые блокировки. Автоматически полученные блокировки всегда выбирают самый низкий возможный уровень блокировки, чтобы минимизировать потенциальные конфликты с другими транзакциями.

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

Механизм Блокировок

  • Высокий уровень параллелизма данных:

    • Блокировки на уровне строки для вставок, обновлений и удалений

    • Никакие блокировки не требуются для запросов

  • Автоматическое управление очередью

  • Блокировки сохраняются до конца транзакции (посредством операции COMMIT или ROLLBACK)

Пример
Предположим, что строки для employee_id 100 и 101 находятся в том же самом блоке:

Механизм Блокировок

Механизм блокировки разработан, чтобы обеспечить максимальную возможную степень параллелизма данных в пределах базы данных. Транзакции, которые изменяют данные, получают блокировки на уровне строки, а не блока или таблицы. Модификации объектов (такие как перемещения таблиц) получают блокировки на уровне объектов, а не целой базы данных или схемы.

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

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

Все блокировки освобождаются, как только транзакции завершаются (то есть, когда выполняются COMMIT или ROLLBACK). В случае неуспешной транзакции тот же самый фоновый процесс, который автоматически откатывает все изменения отказавшей транзакции, освобождает все блокировки, созданные этой транзакцией.

Далее: Данные Отката

Смотрите также
Комментарии
Написать

(обязательно)

(обязательно)

Это не спам (обязательно)