Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РСБДтЗ / Курс лекций РСБДиЗ.doc
Скачиваний:
135
Добавлен:
05.03.2016
Размер:
1.63 Mб
Скачать

Понятие блокировок. Основные типы блокировок

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

Оптимистическое блокирование (optimistic locking) - стратегия блокирования набора данных, при которой раздел, содержащий изменяемую запись, блокируется только на время внесения изменений в запись программой, но не пользователем.

Пессимистическое блокирование (pessimistic locking) - стратегия блокирования набора данных, при которой раздел, содержащий изменяемуюзапись, блокируется на все время внесения изменений в записьпользователем и не доступна для редактирования другим пользователям.

Особенность механизма блокировок Oracle - блокировки данных не хранятся как отдельный ресурс, а содержатся непосредственно в блоках данных. Это позволяет избежать таких проблем, как эскалация блокировок. Ниже перечислены пять основных классов блокировок в Oracle. Первые три - общие (используются во всех базах данных Oracle), а две остальные — только в OPS (Oracle Parallel Server - параллельный сервер).

  1. Блокировки ЯМД (DML locks). ЯМД означает язык манипулирования данными (Data Manipulation Language), то есть операторы SELECTINSERTUPDATE и DELETE. К блокировкам ЯМД относятся, например, блокировки строки данных или блокировка на уровне таблицы, затрагивающая все строки таблицы.

  2. Блокировки ЯОД (DDL locks). ЯОД означает язык определения данных (Data Definition Language), то естьоператоры CREATEALTER и так далее. Блокировки ЯОД защищают определения структур объектов.

  3. Внутренние блокировки (internal locks) и защелки (latches). Защелки - это простые низкоуровневые средства обеспечения последовательности обращений. Защелки обычно запрашиваются системой в режиме ожидания. Это означает, что, если защелку нельзя установить, запрашивающий сеанс приостанавливает работу на короткое время, а затем пытается повторить операцию. Другие защелки могут запрашиваться в оперативном режиме, то есть процесс будет делать что-то другое, не ожидая возможности установить защелку. Защелки выделяются случайным образом. Внутренние блокировки - более сложное средство обеспечения очередности доступа, они позволяют запрашивающему "встать в очередь" в ожидании освобождения ресурса. Запрашивающий защелку сразу уведомляется об освобождении ресурса. В случае внутренней блокировкизапрашивающий полностью блокируется.

  4. Распределенные блокировки (distributed locks). Эти блокировки используются сервером OPS для согласования ресурсов машин, входящих в кластер. Распределенные блокировки устанавливаются экземплярами баз данных, а не отдельными транзакциями.

  5. Блокировки параллельного управления кэшем (PCM - Parallel Cache Management Locks). Такие блокировкизащищают блоки данных в кэше при использовании их несколькими экземплярами баз данных.

SQL Server поддерживает три основных типа блокировок:

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

  2. Exclusive Lock - монопольная блокировка, которая применяется при изменении данных. Эта блокировкаполностью запрещает доступ к данных другим транзакциям.

  3. Update Lock - блокировка обновления, которая является промежуточной между разделяемой и монопольной блокировкой. Используется, когда транзакция хочет обновить данные в какой-то ближайший момент времени, но не сейчас, и, когда этот момент придет, не хочет ожидать другой транзакции. В этом случае другим транзакциям разрешается устанавливать разделяемые блокировки, но не позволяет устанавливать монопольные.

Блокировки могут устанавливаться на трех уровнях -

  • Уровень строк - уровень по умолчанию.

  • Уровень страницы - используется для более эффективного использования ресурсов и в случае если в данной странице много строк с этой блокировкой.

  • Уровень таблицы - используется при операциях над таблицей и в случае эскалации блокировок.

Соседние файлы в папке РСБДтЗ