Еще раз о защелках, очередях, замках, блокировках, семафорах.

В блоге уже поднималась эта тема. Тем не менее, не лишним будет акцентировать внимание еще раз на различной природе этих сущностей.

Защелки

. Latch - внутренний механизм Oracle, используемый для защиты структур данных в SGA от одновременного доступа. Защелка - атомарная процессорная инструкции типа TEST-И-SET. Защелки всегда эксклюзивны, и это не очередь! Информация о них находится в представлении v$latch.

Блокировки

.Locks, enqueues (замок, очередь) - разные названия по сути одной и той же сущности, защищающей объекты БД . Информация об этом механизме находится в представлении V$LOCK. Термином enqueue называется механизм блокировки. Термином блокирование (“locking”) обозначают следующие события:

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

Защёлки - защищают участки оперативной памяти от разрушения и несогласованного чтения при конкурентном доступе со стороны процессов СУБД. Защёлки живут очень непродолжительное время достаточное только для того, чтобы извлечь или изменить данные в SGA.

Блокировки - защищают записи, таблицы, хранимые процедуры, файлы, табличные пространства и прочие объекты БД, кэш словаря БД во время изменения словаря, ресурсы определяемые приложением. Они живут довольно продолжительное время.


Блокировки

. Время жизни связано со временем жизни транзакции. Завершается транзакция – завершается блокировка.

Защелки

возникают на протяжении транзакции и тут же пропадают, выполнив свою функцию.


Если в некоторой степени абстрагироваться, то:

Защёлки

защищают экземпляр Оракл.

Блокировки

защищают объекты БД или ресурсы определяемые приложением.

Главное: Блокировки реализуются с помощью защёлок, которые являются механизмом самого низкого уровня.

Это были объяснения на пальцах. Более подробно читаем здесь и здесь.

А теперь о семафорах.

Главными ресурсами ядра UNIX, необходимыми для рабочие мероприятия Oracle, в том числе для рабочие мероприятия пользовательских процессов, являются общие сегменты памяти и семафоры. Очевидно, что различные оракловские процессы используют общую память для чтения или изменения данных. Иногда возникает необходимость одновременно обратиться к одному и тому же участку памяти. Для согласованного использования памяти конкурирующими процессами, UNIX использует семафоры, которые обеспечивают взаимоиск¬лючающий доступ. Они реализованы как определенные структуры данных, находящиеся в обл. памяти ядра.

Вас заинтересует / Intresting for you:

Видеокурс по администрированию...
Видеокурс по администрированию... 10719 просмотров Илья Дергунов Mon, 14 May 2018, 05:08:47
Oracle и непроцедурный доступ ...
Oracle и непроцедурный доступ ... 8510 просмотров Antoni Tue, 21 Nov 2017, 13:32:50
Работа с запросами Approximate...
Работа с запросами Approximate... 2271 просмотров Андрей Васенин Mon, 29 Oct 2018, 06:40:46
СУБД Oracle: обзор характерист...
СУБД Oracle: обзор характерист... 15794 просмотров Antoni Fri, 24 Nov 2017, 07:35:05
Войдите чтобы комментировать

ildergun аватар
ildergun ответил в теме #8863 6 года 3 мес. назад
Настоящим человеческим языком разъяснили суть терминов блокировка, защелка, очередь, замок, семафор относительно баз данных Oracle. Я хоть и не новичок, но тоже с удовольствием освежил знания и, как говориться, сверил позиции. Рад, что понимание вопроса у нас совпадает. Спасибо!