Защелка, блокировка. Разница то в чём?

dbstalker, 04 сентября

Защелка и блокировка - методы обеспечения очередности доступа к общим объектам. Только защёлка – механизм низкого уровня, блокировка – высокого уровня. Попытаюсь объяснить очень упрощенно.

Защелка (latch) – «замок защелкивается», если кто-то работает с определенным участком памяти, и, как следствие, никто другой теперь в этот участок не попадет.

Блокировка – никого не допускает к строкам таблицы, если Вы меняете ее.

Пример

Мы работаем с записью. Она уже находится в буфере в SGA. Запись эту нужно заблокировать, чтобы никакая другая сессия не заблокировала ее.

Наш серверный процесс вешает защелку на буфер с записью, читает буфер, находит нужную запись, ставит отметочку о том, что эта запись заблокирована нами. Таким образом, блокировка создана. Снимаем защелку. Работаем с записью.

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

Можно сделать вывод, что блокировка реализуется с помощью защелки. Подробно об этих механизмах читайте здесь и здесь.

 

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

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



 

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

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

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

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


 
 

Бизнес форум