Классика баз данных - статьи

       

с протоколом S2PL. Этот протокол


  • Транзакции, модифицирующие данные, выполняются в соответствием с протоколом S2PL. Этот протокол является вариантом 2PL. В нем все монопольные блокировки отпускаются лишь в конце транзакции. Каждая операция, изменяющая элемент данных, создает новую версию этого элемента. При завершении транзакции каждая такая версия помечается временной меткой, соответствующей времени завершения транзакции.
  • Запросы (read-only transactions) обрабатываются подобно тому, как это происходит в протоколе MVTO. Каждому запросу также ставится в соответствие временная метка. Но в данном случае она соответствует времени начала транзакции. При выборе версии для чтения запрос выбирает последнюю, завершенную к моменту старта запроса версию.


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


    Содержание  Назад  Вперед