ScholarGate
Ассистент

Уровни изоляции

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

Найти тему в PaperMindСкороFind papers & topics
Tools & resources
Скачать слайды
Learn & explore
ВидеоСкоро

Definition

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

Scope

Эта тема охватывает стандартные уровни изоляции — чтение незафиксированных данных (read uncommitted), чтение зафиксированных данных (read committed), повторяемое чтение (repeatable read) и сериализуемость (serializable) — определяемые с точки зрения феноменов (грязное чтение, неповторяемое чтение, фантомное чтение), которые каждый из них допускает или предотвращает, а также влиятельную критику, которая переосмыслила их с точки зрения допустимых аномалий, и практически важную изоляцию снимков (snapshot isolation) и ее аномалии, такие как перекос записи (write skew). В ней рассматривается компромисс между согласованностью и параллелизмом. Она исключает базовые механизмы блокировки и многоверсионности, которые реализуют эти уровни.

Core questions

  • Какие аномалии — грязное чтение, неповторяемое чтение, фантомное чтение — допускает каждый уровень изоляции?
  • Как стандарт SQL определяет четыре уровня изоляции?
  • Почему исследователи критиковали определения, основанные на аномалиях, как двусмысленные?
  • Каково место изоляции снимков и какие аномалии (например, перекос записи) она может допускать?
  • Как приложения выбирают уровень изоляции для данной рабочей нагрузки?

Key concepts

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

Key theories

Уровни изоляции, основанные на аномалиях
Стандарт SQL определяет уровни изоляции по тому, какие из трех феноменов — грязное чтение, неповторяемое чтение и фантомное чтение — они допускают, от чтения незафиксированных данных (все разрешены) до сериализуемости (ни один не разрешен).
Критика уровней изоляции ANSI
Беренсон и его коллеги показали, что определения стандарта, основанные на феноменах, двусмысленны и неточно характеризуют многоверсионные системы, и они представили изоляцию снимков как отдельный, широко реализованный уровень, не охваченный исходными определениями.
Изоляция снимков и ее аномалии
При изоляции снимков каждая транзакция считывает согласованный снимок на момент своего начала, обеспечивая надежное поведение при чтении без блокировок чтения, но она может допускать несериализуемые аномалии, такие как перекос записи, что мотивирует сериализуемую изоляцию снимков.

Clinical relevance

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

History

Стандарт ANSI/ISO SQL определил уровни изоляции с точки зрения разрешенных феноменов. Критика 1995 года, предложенная Беренсоном, Бернштейном, Греем и О'Нейлами, выявила двусмысленности в этих определениях и охарактеризовала изоляцию снимков, которую приняли основные многоверсионные базы данных. Более поздние работы определили сериализуемую изоляцию снимков для устранения оставшегося пробела в аномалиях.

Debates

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

Key figures

  • Jim Gray
  • Philip Bernstein
  • Hal Berenson

Related topics

Seminal works

  • berenson1995
  • gray1992

Frequently asked questions

В чем разница между неповторяемым чтением и фантомным чтением?
Неповторяемое чтение происходит, когда транзакция дважды считывает одну и ту же строку и видит разные значения, потому что другая транзакция обновила ее между чтениями. Фантомное чтение происходит, когда транзакция повторно выполняет запрос с условием поиска и видит новые строки, которые были вставлены другой транзакцией. Повторяемое чтение предотвращает первое; только сериализуемость надежно предотвращает фантомы.
Идентична ли изоляция снимков сериализуемости?
Нет. Изоляция снимков предоставляет каждой транзакции согласованный снимок и предотвращает грязные и неповторяемые чтения, но она не является полностью сериализуемой: она допускает аномалии перекоса записи, когда две транзакции считывают перекрывающиеся данные и выполняют несвязанные обновления, которые вместе нарушают ограничение. Сериализуемая изоляция снимков расширяет ее для устранения таких аномалий.

Methods for this concept

Related concepts