ScholarGate
Ассистент

Управление транзакциями и параллелизм

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

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

Definition

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

Scope

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

Sub-topics

Core questions

  • Что гарантируют свойства ACID и почему они необходимы?
  • Что делает параллельное расписание корректным, то есть сериализуемым?
  • Как протоколы блокировки, временных меток и многоверсионности обеспечивают сериализуемость?
  • Как журналирование и восстановление восстанавливают согласованное состояние после сбоя?
  • Как более слабые уровни изоляции обменивают согласованность на параллелизм?

Key concepts

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

Key theories

Свойства ACID
Атомарность (выполнение «все или ничего»), согласованность (сохранение ограничений целостности), изоляция (параллельные транзакции кажутся выполняющимися по отдельности) и долговечность (зафиксированные эффекты сохраняются после сбоев) вместе определяют корректное транзакционное поведение.
Сериализуемость
Параллельное расписание корректно, если оно эквивалентно некоторому последовательному выполнению; конфликтная сериализуемость, проверяемая с помощью графа предшествования (сериализации), является практическим критерием, который обеспечивают протоколы контроля параллелизма.
Контроль параллелизма и восстановление
Методы блокировки, упорядочения по временным меткам и многоверсионности предотвращают несериализуемые чередования, в то время как журналирование с предварительной записью и алгоритмы восстановления гарантируют атомарность и долговечность — две составляющие корректной обработки транзакций.

Clinical relevance

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

History

Концепция транзакций и свойства ACID были формализованы в IBM System R в 1970-х годах; Эсваран и коллеги (1976) установили понятия согласованности и блокировки, Джим Грей определил транзакции и восстановление, а Бернштейн, Хадзилакос и Гудман (1987) систематизировали теорию сериализуемости. Вклад Грея в обработку транзакций принес ему премию Тьюринга.

Key figures

  • Jim Gray
  • Philip Bernstein
  • Andreas Reuter

Related topics

Seminal works

  • gray1992
  • bernstein1987
  • eswaran1976

Frequently asked questions

Что означает, что расписание транзакций является сериализуемым?
Параллельное расписание является сериализуемым, если его общий эффект идентичен выполнению тех же транзакций одна за другой в некотором порядке. Сериализуемость — это золотой стандарт критерия корректности: хотя транзакции чередуются для повышения производительности, результат таков, как если бы они выполнялись последовательно, поэтому ни одна транзакция не видит несогласованного промежуточного состояния.
Почему допускаются более слабые уровни изоляции, если они могут приводить к аномалиям?
Обеспечение полной сериализуемости имеет свою цену в производительности из-за конфликтов блокировок и откатов. Многие приложения могут допускать определенные аномалии в обмен на более высокий параллелизм, поэтому стандарт SQL определяет более слабые уровни изоляции (чтение зафиксированных данных, повторяющееся чтение и так далее), которые позволяют разработчикам сознательно обменивать некоторую изоляцию на пропускную способность.

Methods for this concept

Related concepts