Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Уровни изоляции. Манипулирование блокировками средствами SQL.






Термин уровень изоляции используется для описания степени вмешательства параллельных транзакций в работу некоторой заданной транзакции.

Уровень изоляции рассматривается как некоторое свойство транзакции. Чем выше уровень изоляции, тем меньше степень вмешательства (и параллелизма), а чем ниже уровень изоляции, тем больше степень вмешательства (и параллелизма).

Стандарт SQL предусматривает 4 уровня изоляции:

  • READ UNCOMMITTED - уровень незавершенного считывания (возможно считывание объекта после считывания его текущей транзакцией и до ее завершения).
  • READ COMMITTED - уровень завершенного считывания (возможно считывание объекта только после завершения транзакции).
  • REPEATABLE READ - уровень повторяемого считывания (возможно считывание объекта после завершения транзакции).
  • SERIALIZABLE - уровень способности к упорядочению (установление порядка обращения к объектам согласно уровням изоляции).

Уровень read uncommitted является наименее ограничивающим уровнем изолированности, а serializable – наиболее ограничивающим. По мере роста уровня изолированности SQL Server налагает все более ограничивающую блокировку на все более длительные периоды времени.

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

В стандарте SQL выделены три случая нарушения способности к упорядочению, фактически именно те, которые были описаны выше как проблемы параллелизма:

  • Неаккуратное считывание (" Грязное" чтение, незафиксированная зависимость).
  • Неповторяемое считывание (Частный случай несовместного анализа).
  • Фантомы (Фиктивные элементы - частный случай несовместного анализа).

Потеря результатов обновления стандартом SQL не допускается, т.е. на самом низком уровне изолированности транзакции должны работать так, чтобы не допустить потери результатов обновления.

Устно. Различные уровни изоляции определяются по возможности или исключению этих особых случаев нарушения способности к упорядочению. Эти определения описываются следующей таблицей:

Уровень изоляции Неаккуратное считывание Неповторяемое считывание Фантомы
READ UNCOMMITTED Да Да Да
READ COMMITTED Нет Да Да
REPEATABLE READ Нет Нет Да
SERIALIZABLE Нет Нет Нет

Таблица 4 Уровни изоляции стандарта SQL

Уровень изоляции транзакции задается следующим оператором:

SET TRANSACTION {ISOLATION LEVEL

{READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}

Этот оператор определяет режим выполнения следующей транзакции, т.е. этот оператор не влияет на изменение режима той транзакции, в которой он подается. Обычно, выполнение оператора SET TRANSACTION выделяется как отдельная транзакция:

… (предыдущая транзакция выполняется со своим уровнем изоляции)

COMMIT;

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

COMMIT;

… (следующая транзакция выполняется с уровнем изоляции REPEATABLE READ)






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.