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

dbstalker, 11 апреля

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

Новый комментарий

Я не спамер: введите суму 7+0



 

От авторов блога

О Блоге - прочитай перед началом.

Задать вопрос и получить ответ - уже решено 94 вопросов

Глоссарий - список терминов и сокращений


 
 

Бизнес форум

Последние темы:

Нужен поставщик Дропшиппинг
10 декабря, 1 ответа
КИНО КАФЕ!!!!!!!!!!!!!!!!
10 декабря, 1 ответа