Подтвердить что ты не робот

В чем разница между блокировкой и защелкой в ​​контексте одновременного доступа к базе данных?

Я пытаюсь понять статью о параллельном B-дереве, в которой автор упомянул latch vs lock и как защелки не нуждаются в "Менеджере блокировок". Я пытался выяснить, какие различия между этими двумя в течение двух дней.

Google приводит к:

"Блокировки гарантируют логическую согласованность данных. Они реализуются через таблицу блокировок, хранящуюся в течение длительного времени (например, 2PL), и являются частью механизма обнаружения взаимоблокировок.

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

Тем не менее, я все еще в замешательстве. Кто-нибудь может уточнить это? и что именно делает менеджер блокировок?

Заранее спасибо.

4b9b3361

Ответ 1

Из CMU 15-721 (Spring 2016), презентация лекции 6, слайды 25 и 26, в которых цитируется Обзор методов блокировки B-Tree by Goetz Graefe:

Замки
→ Защищает логическое содержимое индексов от других txns.
→ Сохранено для длительности txn.
→ Необходимо иметь возможность отката изменений.

Задвижки
→ Защищает критические разделы внутренней структуры данных индексов от других потоков.
→ Сохранено для продолжительности работы.
→ Не нужно иметь возможность отката изменений.

Замки и защелки

Ответ 2

Это действительно зависит от вашей СУБД, но здесь хорошее объяснение для Oracle.

http://www.dba-oracle.com/t_lru_latches.htm

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

Ответ 3

Другое название защелки - "спин-замок". Это простой цикл while, пока бит не станет равным нулю (в зависимости от реализации). Поток выполнения никогда не спит, пока защелка недоступна. Никакой очереди. Спин-блокировка полезна для кратковременной блокировки объектов памяти, но расточительна, если ее удерживать в течение более длительного времени. Смотрите статью "Spinlock" в Википедии

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

Диспетчер блокировок - это подсистема, которая может предоставить вам как спин-блокировки, так и тяжелые блокировки для поддержки параллелизма.

Смотрите также статью Тома Кайта о защелках и замках.

Ответ 4

Ниже приведена точка ожидания SQL Server.

Защелки - это краткосрочные объекты синхронизации легкого веса. В отличие от блокировок, защелки не сохраняются до полной логической транзакции. Они работают только на операции на page.

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

Ожидания, вызванные защелками, очень важны для диагностики проблем производительности. Взгляните на Диагностика и разрешение споров защелки на SQL Server - Технический документ. PAGEIOLATCH_EX является важным типом ожидания.

Ссылки

Ответ 5

Разница между замками и защелками:

Ссылка, взятая из этого блога.

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

Замки обеспечивают согласованность логической транзакции, а защелки обеспечивают согласованность области памяти.

Администратор базы данных может управлять и управлять блокировками базы данных, применяя различные уровни изоляции и для защелок, DBA не имеет никакого управления, потому что его управляет SQL Server.

Ответ 6

Цитата из OLTP через зазеркалье и то, что мы там нашли от Stonebraker и др.

Блокировка. Традиционная двухфазная блокировка создает значительные накладные расходы, так как все обращения к структурам баз данных управляются отдельным объектом, Lock Manager.

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

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

Ответ 7

Согласно статье " Архитектура системы баз данных", стр. 223.

Защелки отличаются от замков рядом способов:

  • Замки хранятся в таблице блокировок и располагаются через хеш-таблицы; защелки находятся в памяти рядом с ресурсами, которые они защищают, и доступны через прямую адресацию.

  • В строгой реализации 2PL блокировки подчиняются строгому протоколу 2PL. Защелки могут быть получены или отброшены во время транзакции на основе внутренней логики специального случая.

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

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

  • Защелки реализуются с помощью атомарной аппаратной инструкции или, в редких случаях, когда это недоступно, путем взаимного исключения в ядре ОС.

  • Вызовы защелки занимают не более нескольких десятков циклов ЦП, тогда как запросы блокировки занимают сотни циклов ЦП.

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

  • Защелки не отслеживаются и поэтому не могут быть автоматически разблокированы в случае сбоя задания.

Ответ 8

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

Защелки могут быть добавлены в подчеркнутое представление данных, например, таблицу страниц в памяти, которая отображает идентификатор страницы в конкретном кадре.